Новите неща в PHP 5.4 -- I-ва част
Posted / Публикувана 2012-03-04 in category / в категория: PHP
|
Изненадващо (поне за мен) онзи ден забелязах, че е излязло PHP 5.4. След всичките проблеми покрай разработката на PHP6 (за това ще има отделна публикация) си мислех, че PHP е обречено да се развива единствено в 5.3.х клона. За щастие, здравият разум "най-сетне" надделя и PHP "core" разработчиците решиха да backport-нат някои от нещата от PHP 6. Поставил съм "най-сетне" в кавички, защото идеята им беше нещата да са излезли Q2/3 на 2011, а се появяват чак сега, но важното, все пак е, че вече са налични.
По-важните неща първо "съвсем" накратко:
- Добавена е поддръжка за traits (характерности). Те представляват нещо средно между интерфейс и клас. Мислете за тях като клас, от който не могат да бъдат създавани инстанции. Разликата между тях и абстрактните класове е, че даден клас може да наследява друг клас и едновременно с това да "използва" един или повече traits. Разликата между traits и интерфейсите е, че traits могат да дефинират тела на методите (а също и trait променливи или както ги наричат в документацията: properties). Идеята е да се намалят ограниченията на единичното наследяване, като се даде възможност на разработчиците да изграждат модули от код за повторно използване, който да може да бъде включван в класове от различни класови йерархии. Най-вероятно traits няма да се радват на особена популярност сред основната маса от PHP програмисти, а ще представляват интерес единствено за разработчиците на "базови" библиотеки и framework-ове.
- В CLI режим има вграден web сървър, който можете да използвате за "автоматично" тестване на проектите си.
- премахнат е функционалността за автоматично разпознаване на времевата зона (когато не е имало изрично указване с
date.timezone
илиdate_default_timezone_set()
). Сега по подразбиране се използва UTC. Възможно е тази промяна да ви създаде сериозни проблеми, ако разчитате на автоматичното разпонзаване на времевата зона. - добавен е съкратен синтаксис за инициализиране на масиви: вместо
$a = array(1,2,3);
се пише$a = [1,2,3]
. Не е кой знай каква далавера… - премахнат е предразполагащия към чудовищни бъгове синтакс:
break $some_var;
- (най-накрая) премахнато е недоразумението "Safe mode" и всички свързани с него ini опции.
- прамахнати са бъгопредразполагащите
register_globals
,register_long_arrays
,import_request_variables()
.
Следва продължение…
|