2012-10-21 40 views
1

,如果我有假后的代码一样,将“if”语句被编译

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

所以,如果$abctrue代码将“其他代码”编译?

所以这是不相关的,如果有很多“代码”性能明智吗?

+0

是的,它会被编译(实际标记和解析); PHP无法知道'$ abc'会采用什么值。通过在IF内部使用include(),你可以稍微减少负载(但只有它真的是很多代码!)。 – LSerni

回答

6

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

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

将失败,并分析错误,而不是打印,即使DERP永远不能达到“你好,世界!”。

2

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

您可以通过使用包括()中的IF内减少有些负载​​(但只有当它是真的很多的代码!):

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

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

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

1

虽然整个代码在运行时错误“解析”,代码的流程将只能走一个方向,“如果”点,所以基本上没有速度性能问题。

这真的不值得担心,特别是因为'if'等流程控制语句可能是编程最重要的元素。如果没有他们,你就无法获得,真的。

1

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

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

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

虽然我无法真正想到与性能相关的巨大原因,为什么你会这样做。