Что нового в php 5.3?
Для разработчиков приложений на PHP выход php 5.3 стал практически революционным. Самое крупное изменение в интерпретаторе языка программирования за последние 10 лет принесло новые возможности программистам. Так, появилось много современных «фишек». В то же время, приложения, написанные на более ранних версиях php, нужно было модифицировать. Впрочем, оно того стоило.
Что же изменилось?
До появления php версии 5.3 многие функции работы с массивами, как аргументы могли принимать объект и массив, давая желаемый результат. В php 5.3 эти функции могут принимать только массивы. Таким образом, если необходимо обратиться к свойствам объекта, используя функции natsort, natcasesort, usort, rusort, uksort, array_flip и array_unique, то нужно преобразовать объекты в массивы.
Кроме этого, до этой версии php методы __call(), __get(), __set(), __isset() и __unset() можно было объявлять, как защищенные статичные, публичные, частные и так далее. Теперь эти методы - только публичные. Многие функции были удалены. Это session_register(), call_user_method_array(), ereg_replace(), session_unregister(),magic_quotes_runtime(), split() и некоторые другие.
Некоторые директивы в PHP.INI тоже «отменяются». Они вызывают E_DEPRECATED - предупреждения при активации. Речь идет о директивах safe_mode, define_syslog_variables, magic_quotes_gpc, register_globals и подобных.
GOTO и NAMESPACE стали «зарезервированными», то есть их нельзя использовать в качестве названий классов, функций…
Релиз php версии 5.3 разрабатывался примерно два года. Наиболее ощутимым изменением стал существенный рост производительности. Так, на разных CMS производительность возросла от 10 % до 30%.
Namespaces отныне позволяет изолировать пространство имен для функций, классов и констант. Late static binding привязывает к классам, которые вызываются, вне контекста наследования.
Также используется MySQL-драйвер Mysqlnd, который работает непосредственно с MySQL без «посредника» libmysql. Чтобы организовать перегрузку статических методов реализовывается метод __callStatic. Внедряется поддержка OpenID, изменяется техника округления чисел с так называемой «плавающей точкой». Становится возможным определить в ini-файле блоки конфигурации, используя привязку к имени хоста и директории. Таким образом, можно получить функциональность .htaccess. Появляются новые расширения, XSLT профайлинг, полиплатформенный getopt(), поддержка лямбда-функций, замыканий и многое другое.
Наиболее интересные изменения, как считают многие, это адекватная поддержка lambda-функций и closures, а также новый драйвер для MySQL.