Ошибки Deprecation при переходе на PHP 5.3

После установки на VPS Debian Squeeze обнаружилась не очень приятная на первый взгляд мелочь — PHP в дистрибутиве предлагалась версии 5.3. Для того чтобы установить PHP 5.2 необходимы были небольшие «танцы с бубном» а мне как-то не особо хотелось «танцевать» на сервере так что я решил «потанцевать» на скриптах :) В принципе раз уж такой консервативный дистрибутив как Debian принял PHP 5.3 по умолчанию то видимо стоит уже начать его использовать все равно когда-нибудь к нему придется переходить и дорабатывать сайты для соответствия…

Так что пришло время посмотреть что же изменилось в этой версии PHP в связи с чем появляются ошибки типа «Deprecated: Function … is deprecated in …»

Прежде всего что значит эта ошибка? Это означает что выводимые параметры функции или возможности которые обзначены как неиспользуемые а в последующих версиях будут вообще удалены.

Проще всего — но это не значит что это верное решение — отключить вывод ошибок в скрипте через error_reporting(0); или в php.ini для этого добавлено два уровня ошибок E_DEPRECATED и E_USER_DEPRECATED которые и управляют выводом предупреждений.

Полный список описан здесь

Следующие директивы php.ini будут отмечены как deprecated в PHP 5.3 и удалены в PHP 6:

  • define_syslog_variables — теперь всегда OFF.
  • register_globals — теперь всегда OFF.
  • register_long_arrays$HTTP_*_VARS навсегда отменяются.
  • safe_mode — безопасный режим по умолчанию OFF.
  • magic_quotes_gpc magic_quotes_runtime magic_quotes_sybase будут удалены.

Также теперь в php.ini файле нельзя будет применять коментарии начинающиеся с «#» - закомментировать теперь можно только через «;»

Отменены следующие функции:

  • call_user_method() (использовать call_user_func())
  • call_user_method_array() (использовать call_user_func_array())
  • define_syslog_variables()
  • dl()
  • ereg() (использовать preg_match())
  • ereg_replace() (использовать preg_replace() или str_replace())
  • eregi() (использовать preg_match() с модификатором «i»)
  • eregi_replace() (использовать preg_replace() с модификатором «i»)
  • set_magic_quotes_runtime() и ее синоним(alias) magic_quotes_runtime()
  • session_register() (использовать $_SESSION)
  • session_unregister() (использовать $_SESSION)
  • session_is_registered() (использовать $_SESSION)
  • set_socket_blocking() (использовать stream_set_blocking())
  • split() (использовать preg_split())
  • spliti() (использовать preg_split() с модификатором «i»)
  • sql_regcase()
  • mysql_db_query() (использовать mysql_select_db() и mysql_query())
  • mysql_escape_string() (использовать mysql_real_escape_string())

и следующие возможности:

  • В new передача параметра по ссылке в переменную…
  • Вызов call-time функций методов и классов по ссылке…
  • Использование {} для указания смещения внутри строки это можно сделать с помощью [] (как в массиве)…

Оригинал статьи http://pingvinoff.net/2011/12/23/oshibki-deprication-pri-perexode-na-php-5-3/

0 комментариев

Оставить комментарий