1

如果我有这样的代码

if($abc==true) {
   //code code code
} else {
   // other code, other code
}

那么是否$abctrue编译“其他代码”?

那么,如果有很多“代码”性能明智,这是否无关紧要?

4

4 回答 4

6

PHP 在运行时是经过解析的(因此是“编译的”)。无论可达性如何,所有代码都会被处理。例如:

<?php
echo "Hello, World!";
exit;
DERP!!
?>

将失败并返回解析错误而不是打印“Hello, World!”,即使永远无法访问 derp。

于 2012-10-21T23:48:08.563 回答
2

是的,它将被编译(实际上是读取、标记和解析);PHP 无法知道$abc在运行时将采用什么值。

您可以通过在 IF 中使用 include() 来稍微减少负载(但前提是它确实是很多代码!):

 if (condition)
 {
     include('true.php');
 }
 else
 {
     include('false.php');
 }

但请注意,这样您将加载两个文件而不是一个。通常,额外文件的开销使游戏不值得付出努力。

但是,如果 IF 确实有很多很多代码,那么将其分成几个文件可能是维护方面的好主意。重构以从程序流中删除 IF 会更好!

于 2012-10-21T23:51:23.020 回答
1

虽然整个代码在运行时被“解析”为错误,但代码流只会在那个“if”点朝一个方向流动,因此基本上不存在速度性能问题。

这真的不值得担心,特别是因为诸如“if”之类的流控制语句可能是编程中最重要的元素。真的,没有他们你就过不下去。

于 2012-10-21T23:51:26.267 回答
1

您担心哪些性能问题?PHP 是一种解释性语言,这意味着您的文件在每次请求时都会被解析、标记和执行。无论如何,都需要对整个文件进行语法错误分析和标记化。执行什么取决于您的控制流语句,例如您的示例中的if

如果您担心额外的解析,您可以根据控制流语句的结果重构代码以包含另一个文件。

$x = 1;
if($x === 1) {
    include_once './myFile.php';
}
else {
    // Something Else.
}

虽然我真的想不出一个与性能相关的重要原因,为什么你会想要这样做。

于 2012-10-21T23:57:13.567 回答