所以我正在讀關於PHP的命名空間向後兼容的,我意識到,在版本低於5.3,如果你寫使命名空間中的PHP
namespace MyNamespace
你得到一個解析錯誤。
有什麼辦法可以避免這種情況,即使命名空間向後兼容,所以代碼不會簡單地崩潰?
所以我正在讀關於PHP的命名空間向後兼容的,我意識到,在版本低於5.3,如果你寫使命名空間中的PHP
namespace MyNamespace
你得到一個解析錯誤。
有什麼辦法可以避免這種情況,即使命名空間向後兼容,所以代碼不會簡單地崩潰?
簡短的回答:第
更長的答案:(加入到捕捉其他的答案被刪除有用的信息)。新的Syntax將導致PHP中的解析錯誤,因此您不能使用客戶錯誤處理程序來捕獲版本< 5.3中生成的錯誤。從理論上講,你可以編寫一個預處理器掃描和/或對源代碼進行lex/parse,然後寫出與PHP 5.2兼容的東西,但這會產生比解決問題更多的問題。
其實,我認爲這是可能的,但我不認爲這是值得的。這個想法是創建一個自定義的默認值stream wrapper,它將根據新的語法解析PHP文件,並對語法進行適當的修改,使其成爲有效的PHP < 5.3。
包裝將不得不用Foo_Bar_Baz
替換類名稱,如Foo\Bar\Baz
。目前我不確定是否有什麼會導致這種情況不可能發生。
無論如何,我不相信這是值得的努力。升級到PHP 5.3。
哦,這意味着包裝代碼應與PHP < 5.3兼容。
您正在描述向前兼容性。 – webbiedave 2010-05-25 20:43:29
問題是如何使新代碼與舊版本的PHP一起工作。聽起來像向後兼容我... – echo 2010-05-25 20:47:06
問題是如何使舊版本的PHP運行代碼用於更新的版本。這是向前兼容性。 – webbiedave 2010-05-25 20:48:12