PHP 5.4: Основные нововведения

PHP 5.4 добавляет трейты для горизонтального переиспользования методов, облегчает массивы записью [], позволяет сразу индексировать результат функции, переносит $this в замыкания и даёт встроенный сервер php -S для разработки. Это ещё и санитарный релиз: magic quotes, register_globals и safe_mode удалены — легаси, завязанное на эти механизмы, перестаёт работать без рефакторинга.

Ориентир: migration54 и подстраницы new-features / incompatible / deprecated.

Содержание


Трейты

Трейт смешивает набор методов в класс без множественного наследования; конфликты разрешаются insteadof и as.

trait Timestampable
{
    public function touch()
    {
        $this->updatedAt = new \DateTime();
    }
}

class Post
{
    use Timestampable;
}

Короткий массив []

$rows = [['id' => 1], ['id' => 2]];

Старый вызов array(...) остаётся валидным — стиль лучше зафиксировать в стандарте кодирования.

Подсказка callable

function registerHandler(callable $fn) {}

Принимает имя функции, [$obj, 'method'], замыкание и т.д. — правила как у is_callable().

$this в замыканиях

Замыкания, созданные внутри метода объекта, могут использовать $this — проще писать колбэки, привязанные к экземпляру.

Встроенный веб-сервер

php -S localhost:8080 -t public/

Только для dev/тестов: нет полноценного продакшен-стека из коробки.

Прочий синтаксис

Двоичные литералы 0b101010, немедленная индексация результата foo()[0], адаптация трейтов по мануалу.

Практические рецепты

Явно читайте $_GET/$_POST, если код жил за счёт register_globals. Уберите «лечение» stripslashes() под magic quotes — вход теперь без автоматического экранирования.

Обратная несовместимость

Главное (migration54 incompatible): сняты magic quotes и register_globals; удалён safe_mode; расширение mysql помечено deprecated (в PHP 7 его уберут); проверьте циклы с нестандартным break/continue. Уточните на своей сборке, как включён short_open_tag для шаблонов.

Deprecated

mysql_*, split() — см. migration54 deprecated.

Прочее

Перепроверьте сессии и сериализацию после обновления пакета.


Итог

PHP 5.4 выгодно брать вместе с чисткой безопасности: трейты и [] улучшают читаемость, а отказ от globals/magic quotes готовит код к 5.5–5.6 и дальше к PHP 7.