Becoming PHP 6 Compatible 這篇裡面提到的五個技巧,現在遵循這些習慣,等到 PHP6 正式推出的時候程式碼才不會改太多:
- 不要再依賴
register_globals
:register_globals
將$_GET
、$_POST
、$_COOKIE
這三個的變數內容直接對應到全域變數。這在目前的 PHP4 與 PHP5 預設都是關閉的,但還是有文件書籍會「建議」你打開。在 PHP6 中,這個功能將直接消失。不過,還是可以透過 extract() 達到一樣的效果。 - 不要使用
magic_quotes
:這個功能在目前的 PHP4 與 PHP5 預設是開啟的,但在 PHP6 將會消失 (而非改為關閉),所以,在開發軟體時最好以magic_quotes
關閉的情況下開發。 - 不要使用
$HTTP_POST_VARS
或$HTTP_GET_VAR
,改用$_POST
及$_GET
。這點可以用編輯器的字串代換很快的換完。就算真的是很多的程式碼,也可以一次換一些。 - 使用
preg_*
,而不要再用ereg_*
。現在就用preg_*
是因為執行速度比ereg_*
快,另外在 PHP6 將會廢掉ereg_*
。不過應該會有人寫出 PECL extensions 放回來。 - 直接拿原作者的 code 比較清楚:
$a = & new object(); // Do not do
$a = new object(); // Do this as of PHP 6
上面所提到的改變,會強迫使用者不能再用壞習慣寫程式,對於 PHP 的發展會是相當好的事情。
我還是很好奇第五點:為什麼建立物件時在PHP6相容時建議不要使用Reference operator?好處和壞處?
相容的原因是 PHP6 會將這個語法視為錯誤語法。在 PHP5 建議不要用是因為物件化的理念與 reference 有矛盾。
加上一點,把mb_開頭的函數改回不帶mb_開頭的函數,因為PHP6有了Unicode模組,將會把MBString模組廢掉~