понедельник, 5 марта 2012 г.

Выпуск 7. PHP 5.4 released

И так вышел релиз php 5.4.

Список нововведений, несовместимостей и руководство по миграции можно посмотреть на сайте php.net, полный change log тоже доступен.



Язык / интерпретатор

Из наиболее интересных изменений в языке/интерпритаторе:

Trait (типажи)

Cм. мою статью на Хабре, я её также собираюсь обновить, так как в релизе появилось пару новых полезных возможностей).

Dereferencing (разыменование)

Появилось для array и объектов, проще объяснить на примере:


    //array
    function abc() {
       return array('year' => 2012, 'month' => 12);
    }
    $year = abc()['year'];

    //object
    ( new DateTime() )->format('d.m.Y H:i'); 
    //обратите внимание на скобки, без них так не сработает


Тестовый сервер

Для разработки нужд теперь можно поднимать тестовый веб-сервер, прямо из php command line. Хороший вариант для тех, кто ленится разворачивать у себя на Windows тестовую машину (для linux это проще).

Не вздумайте использовать в production.

Подробности в документации.

Закопали наконец Выкинули magic_quotes и safe_mode.


Короткая запись массива и хеш-массива

    $a = ['title' => 'Yo', 'tags' => ['rap', 'yo']]; 
    $b = array('title' => 'Yo', 'tags' => array('rap', 'yo'));
    $a === $b; // => true

Closure с поддержкой $this, которые можно "перевешивать"

Примерно как Function.prototype.apply, Function.prototype.call в php.
Про это напишу подробнее когда-нибудь позже. Например, это позволит динамически "собирать" функциональность объектов.

Пока см. manual.


Стандартная библиотека

Из наиболее интересных изменений библиотеки:

  • json_encode с флагом поддержки прямого unicode (без escape последовательностей, типа \u****,  теперь просто в UTF-8) - позволит ускорить обработку таких json в браузере и формирование на сервере
  • реализация объекта сессий (вместо набора кучи фукнций)
  • новые SPL классы (а вы ещё не знаете/не используете SPL? Срочно читать manual).

Не совместимости

Большинство заметит только пару новых reserved words и удаленые древние фукнции:
session_is_registered(), session_register() и session_unregister().

Полный список.


Спасибо Вове А. за помощь в написании статьи.

Комментариев нет:

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