我是PHP新手,在基於類的網站上工作。所以我的問題很簡單。我可以像.NET一樣編譯網站嗎?PHP:我可以編譯/構建我的網站像.NET嗎?
這對我很有幫助,因爲我將我的IsAAction接口更改爲接受錯誤回調函數作爲Execute函數的參數,並且我希望所有實現都可以中斷,以便我可以輕鬆地看到要更改它們的位置。
在此先感謝。
我是PHP新手,在基於類的網站上工作。所以我的問題很簡單。我可以像.NET一樣編譯網站嗎?PHP:我可以編譯/構建我的網站像.NET嗎?
這對我很有幫助,因爲我將我的IsAAction接口更改爲接受錯誤回調函數作爲Execute函數的參數,並且我希望所有實現都可以中斷,以便我可以輕鬆地看到要更改它們的位置。
在此先感謝。
PHP可以被編譯,因爲您可以將它編譯爲機器代碼並防止每次訪問文件時進行解析。像APC這樣的加速器的工作方式。但是你不能像.NET DLL一樣編譯它,並且每個錯誤都會提前檢查。這將違背其動態性質。遲綁定意味着它將始終檢查運行時錯誤
對於您的特殊問題,我建議將單元測試添加到您的項目。他們是非常好無論如何,他們會幫助你在你的接口實現中發現錯誤。沒有他們,我個人離不開他們。您可能想要檢查PHPUnit或SimpleTests。
編輯爲了理解爲什麼PHP不能檢查你的錯誤,只需檢查這段代碼。
if ($_GET['impl'] == 'interface1') {
interface MyInterface {
function foo($var);
}
} else {
interface MyInterface {
function bar($var, $var2);
}
}
class Implementation implements MyInterface { //Will crash or not depending on the URL!
function foo($var) {}
}
有趣的例子,謝謝,我沒有意識到這一點。 – grefly 2011-04-11 07:27:48
不是我所知。 PHP是一種腳本語言。
https://github.com/facebook/hiphop-php/wiki - 儘管我敢肯定有other answers在這裏,你會發現有用。
在相關的計算器上有一個打開的主題。
有些政黨,例如Facebook的重寫PHP運行,或它的一部分,使他們有可能運行編譯PHP代碼或者其他的源代碼,幾乎任何你喜歡的。
它不是一件容易的事。但你可以做到。
PHP源代碼在解析時由Zend引擎編譯爲字節碼。或者,您可以使用[HipHop for PHP](https://github.com/facebook/hiphop-php/wiki/)將PHP編譯爲C++,這就是Facebook所做的。 – Ryan 2011-04-11 02:27:13