Новите неща в 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_arraysimport_request_variables().

 

Следва продължение…

Comments are closed.