Релиз PHP 7. Что нового

Вышел долгожданный релиз PHP 7. К разработке PHP 7 подошли очень ответственно — релиз должен был выйти ещё 12 ноября, но вместо этого незапланировано выпустили дополнительный кандидат RC 7 (с исправлением 17 багов) и отвели две недели на тестирование. Затем, 26 ноября, выпустили ещё один кандидат RC 8, исправляющий 11 багов, с неделей на тестирование.

Ниже — неполный список улучшений и нововведений:

  • PHP 7 до двух раз быстрее PHP 5.6;
  • Улучшена 64-битность:
    • В 64-битных сборках добавлена поддержка строк длиной более 231 байт;
    • В PHP x64 для Windows добавлена нативная поддержка 64-разрядных целых чисел и больших файлов;
  • Многие фатальные ошибки теперь вызывают исключения и, соответственно, могут быть обработаны:
    try {
        call_method(null); // Упс!
    } catch (EngineException $e) {
        echo "Exception: {$e->getMessage()}\n";
    }
  • Не перехваченные ошибки в PHP 7 будут обработаны так же, как и ранее в PHP 5.x;
  • NULL-коалесцирующий оператор (??) — проверяет переменную на существование и возвращает её значение либо значение второго операнда:
    // PHP 7+
    $username = $_GET['user'] ?? 'nobody';
    // Эквивалент ранних версий PHP
    $username = isset($_GET['user']) ? $_GET['user'] : 'nobody';
  • Комбинированный оператор сравнения (<=>) — возвращает -1, 0 или 1, если первый операнд, соответственно, меньше, равен, или больше второго операнда:
    // PHP 7+
    echo 1 <=> 1; // 0
    echo 1 <=> 2; // -1
    echo 2 <=> 1; // 1
  • Возможность декларирования типов аргументов и значений функций:
    function foo(): array {
        return [];
    }

    Кроме того, PHP 7 вводит четыре новых типа: int, float, string, bool;

  • Анонимные классы:
    var_dump(new class($i) {
        public function __construct($i) {
            $this->i = $i;
        }
    });

    Синтаксис анонимных классов аналогичен традиционным классам. Анонимные классы удобны, например, когда класс используется только один раз или в случаях, когда нет необходимости в документировании класса;

  • Удалены старые SAPI и расширения. Все удалённые элементы ранее (в PHP 5.x) были помечены как устаревшие (deprecated) и не рекомендовались к использованию.
  • И многое другое…

Оригинал статьи взят в блоге Сергея Яковлева

Релиз PHP 7. Что нового: 4 комментария

Добавить комментарий