如果我有这样的代码
if($abc==true) {
//code code code
} else {
// other code, other code
}
那么是否$abc
会true
编译“其他代码”?
那么,如果有很多“代码”性能明智,这是否无关紧要?
如果我有这样的代码
if($abc==true) {
//code code code
} else {
// other code, other code
}
那么是否$abc
会true
编译“其他代码”?
那么,如果有很多“代码”性能明智,这是否无关紧要?
PHP 在运行时是经过解析的(因此是“编译的”)。无论可达性如何,所有代码都会被处理。例如:
<?php
echo "Hello, World!";
exit;
DERP!!
?>
将失败并返回解析错误而不是打印“Hello, World!”,即使永远无法访问 derp。
是的,它将被编译(实际上是读取、标记和解析);PHP 无法知道$abc
在运行时将采用什么值。
您可以通过在 IF 中使用 include() 来稍微减少负载(但前提是它确实是很多代码!):
if (condition)
{
include('true.php');
}
else
{
include('false.php');
}
但请注意,这样您将加载两个文件而不是一个。通常,额外文件的开销使游戏不值得付出努力。
但是,如果 IF 确实有很多很多代码,那么将其分成几个文件可能是维护方面的好主意。重构以从程序流中删除 IF 会更好!
虽然整个代码在运行时被“解析”为错误,但代码流只会在那个“if”点朝一个方向流动,因此基本上不存在速度性能问题。
这真的不值得担心,特别是因为诸如“if”之类的流控制语句可能是编程中最重要的元素。真的,没有他们你就过不下去。
您担心哪些性能问题?PHP 是一种解释性语言,这意味着您的文件在每次请求时都会被解析、标记和执行。无论如何,都需要对整个文件进行语法错误分析和标记化。执行什么取决于您的控制流语句,例如您的示例中的if。
如果您担心额外的解析,您可以根据控制流语句的结果重构代码以包含另一个文件。
$x = 1;
if($x === 1) {
include_once './myFile.php';
}
else {
// Something Else.
}
虽然我真的想不出一个与性能相关的重要原因,为什么你会想要这样做。