代码是否会出现错误" if"语句被编译

时间:2012-10-21 23:45:13

标签: php performance

如果我有这样的代码

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

因此,如果$abctrue,那么"其他代码"被编译?

如果有很多"代码"那么这就无关紧要了。表现明智吗?

4 个答案:

答案 0 :(得分:6)

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

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

使用Parse Error会失败,而不是打印“Hello,World!”,即使无法达到derp。

答案 1 :(得分:2)

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

你可以通过在IFs中使用include()来稍微减少负载(但只有当它真的是很多代码!)时才会这样做:

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

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

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

答案 2 :(得分:1)

尽管整个代码在运行时“解析”了错误,但代码流只会在“if”点的一个方向上进行,因此基本上没有速度性能问题。

这真的不值得担心,特别是因为诸如'if'之类的流控制语句可能是编程中最重要的元素。没有它们,你真的无法实现。

答案 3 :(得分:1)

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

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

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

虽然我无法想到与表现相关的一个巨大原因,为什么你会这样做。