現在,PHP 已經發展成為一種流行的腳本語系,可以在很多公共的資源裡找到可以在自己的腳本中重新利用的代碼。PHP
語系的開發者為向下相容性下了很多功夫,因此在新版本的
PHP 下,老版本的代碼應該可以在不作任何改動的情況下(理想地)運行。不過實際上,還是必須對老的代碼做一些改動。
有可能影響到老版本的代碼的最重要的兩點改動分別是:
取消了舊的 $HTTP_*_VARS
陣列(在函數或是方法中原本是全局變量)。PHP
4.1.0
版本引入了如下自動全局陣列變量:$_GET、$_POST、$_COOKIE、$_SERVER、$_FILE、$_ENV、$_REQUEST
以及 $_SESSION。老的 $HTTP_*_VARS
陣列,諸如 $HTTP_POST_VARS 等,從 PHP 3 就已經開始使用,它們仍然存在。自 PHP 5.0.0 起,長格式的 PHP
預定義變量可以通過設定
register_long_arrays 來屏蔽。
外部變量不再被預設註冊為全局變量。也就是說,從
PHP 4.2.0
版開始,php.ini 中的設定選項
register_globals
預設值變成了
off。建議用以上提到的自動全局陣列變量來訪問這些值。但可能老的腳本、書籍以及教學都可能建立在該設定為
on 的基礎上。若果該選項被設定為
on,則可以在
URL http://www.example.com/foo.php?id=42
中直接使用變量 $id。但不管被設定為 on 還是
off,$_GET['id'] 一直有效。
若果希望瞭解關於這些改動的細節,請參閱「預定義變量」一章以及其中的連線。