Использование старых программ с новыми версиями PHP

Сейчас PHP является популярным языком сценариев(скриптов) и поэтому появляется все больше и больше распространяемых кусочков кода, которые вы можете использовать в своих скриптах. В большинстве случаев разработчики PHP старались сохранить совместимость с предыдущими версиями так, чтобы код, написанный для более старой версии, работал (в идеале) и с новыми версиями языка без каких-либо изменений. Однако случается так, что изменения все-таки необходимы.

Есть два важных изменения, которые влияют на старые программы:

  • Объявление массивов $HTTP_*_VARS устаревшими. Эти массивы требовали объявления себя глобальными при использовании в функциях и процедурах. Новые суперглобальные массивы были введены, начиная с PHP » 4.1.0. Это: $_GET, $_POST, $_COOKIE, $_SERVER, $_FILES, $_ENV, $_REQUEST и $_SESSION. Более старые массивы $HTTP_*_VARS, такие, как $HTTP_POST_VARS, также существуют. Начиная с PHP 5.0.0, длинные предопределенные переменные массивов PHP могут быть отключены директивой register_long_arrays.
  • Внешние переменные больше не глобализуются по умолчанию. Другими словами, начиная с версии PHP » 4.2.0, директива register_globals в php.ini по умолчанию отключена ("off"). Рекомендуемый метод доступа к таким переменным - суперглобальные массивы, описанные выше. Более старые программы, книги и руководства могут считать, что данная директива включена ("on"). К примеру, если бы эта директива была включена ("on"), такой скрипт мог бы использовать переменную $id, поступившую из строки URL http://www.example.com/foo.php?id=42. Вне зависимости от значения данной директивы, переменная $_GET['id'] будет всегда доступна.
Для дополнительной информации касательно изменений, связанных с переменными, смотрите раздел "Предопределенные переменные" и ссылки этого раздела.


Участник рейтинга Тэглайн 2010