,如果我有假後的代碼一樣,將「if」語句被編譯
if($abc==true) {
//code code code
} else {
// other code, other code
}
所以,如果$abc
是true
代碼將「其他代碼」編譯?
所以這是不相關的,如果有很多「代碼」性能明智嗎?
,如果我有假後的代碼一樣,將「if」語句被編譯
if($abc==true) {
//code code code
} else {
// other code, other code
}
所以,如果$abc
是true
代碼將「其他代碼」編譯?
所以這是不相關的,如果有很多「代碼」性能明智嗎?
PHP是在運行時分析(因此「編譯」)。所有的代碼都被處理,無論可達性如何。例如:
<?php
echo "Hello, World!";
exit;
DERP!!
?>
將失敗,並分析錯誤,而不是打印,即使DERP永遠不能達到「你好,世界!」。
是的,它會被編譯(實際上是讀取,標記和解析); PHP無法知道在運行時$abc
會採用什麼值。
您可以通過使用包括()中的IF內減少有些負載(但只有當它是真的很多的代碼!):
if (condition)
{
include('true.php');
}
else
{
include('false.php');
}
但請注意,這樣你將加載文件而不是一個。通常,額外文件的開銷使得遊戲不值得付出努力。
但是,如果IF確實有很多很多的代碼,那麼將它分成幾個文件可能是維護方面的一個好主意。重構從程序流中刪除IF會更好!
雖然整個代碼在運行時錯誤「解析」,代碼的流程將只能走一個方向,「如果」點,所以基本上沒有速度性能問題。
這真的不值得擔心,特別是因爲'if'等流程控制語句可能是編程最重要的元素。如果沒有他們,你就無法獲得,真的。
您擔心哪些性能問題? PHP是一種解釋型語言,這意味着您的文件將在每個請求中被解析,標記並執行。無論如何,整個文件都需要進行語法分析和標記。執行的內容取決於您的控制流程語句,如,如果在您的示例中。
如果你擔心額外的解析,您可以重構代碼,包括基於控制流語句的結果另一個文件。
$x = 1;
if($x === 1) {
include_once './myFile.php';
}
else {
// Something Else.
}
雖然我無法真正想到與性能相關的巨大原因,爲什麼你會這樣做。
是的,它會被編譯(實際標記和解析); PHP無法知道'$ abc'會採用什麼值。通過在IF內部使用include(),你可以稍微減少負載(但只有它真的是很多代碼!)。 – LSerni