Pull to refresh

PHP 7 Alpha 1. Что нового

Website development *PHP *

11 июня вышла альфа версия долгожданного PHP 7. Этот релиз является началом седьмой ветки. Релиз финальной версии запланирован на ноябрь 2015 года. Под катом приведен неполный список основных нововведений.


  • Улучшение быстродействия. PHP 7 работает до двух раз быстрее чем PHP 5.6.
  • Добавлена поддержка сокращенной конструкции use:

    use Symfony\Component\Console\{
      Helper\Table,
      Question\ChoiceQuestion as Choice,
      Question\ConfirmationQuestion,
    };
    

  • Добавлен оператор "??" (Null coalescing operator), позволяющий проверить переменную на существование и вернуть ее значение либо значение по умолчанию.
    Например следующая конструкция:

    $action = isset($_POST['action']) ? $_POST['action'] : 'index';
    

    Теперь может быть коротко записана так:

    $action = $_POST['action'] ?? 'index';
    

  • Добавлена поддержка строк длиной больше 2^31 байт в 64-битных билдах.
  • Добавлен метод Closure::call(object $to[, mixed $parameters]), позволяющий вызвать анонимную функцию с произвольным $this.
  • Добавлен синтаксис \u{xxxxxx} для строк, позволяющий указывать произвольные Unicode символы в строках.
  • В качестве значения констант, объявляемых через define() теперь можно указывать массивы.
  • Добавлен новый оператор сравнения <=>, так же известный как «spaceship operator». Конструкция $a <=> $b возвращает -1, 0 или +1 если $a соответственно меньше, равно или больше $b. Удобно использовать в колбэках для usort().
  • Зарезервированные ключевые слова теперь можно использовать в качестве имен методов:

    $object::new('foo', 'bar')->forEach(function($index, $item) {});
    

  • Синтаксис конструкторов в стиле PHP 4 (имя метода конструктора совпадает с именем класса) теперь считается устаревшим.
  • Статичные вызовы (::) нестатичных методов теперь считаются устаревшими.
  • Добавлена константа PHP_INT_MIN.
  • Удалена INI директива «asp_tags». Попытка включить ее приведет к фатальной ошибке. Так же удалена поддержка тэгов в стиле ASP (<%).
  • Удалена INI директива «always_populate_raw_post_data». Переменная $HTTP_RAW_POST_DATA соответственно больше не доступна. Вместо нее используйте дескриптор входного потока php://input.
  • Итерация по массиву при помощи foreach() больше не сдвигает внутренний указатель массива, который можно получать и изменять при помощи функций current()/next()/reset() и им подобных. Так же foreach по значению теперь всегда работает с копией массива.
  • Оператор левого побитового сдвига (<<) на количество бит, превышающее количество бит в integer теперь всегда возвращает 0. До этого результат зависел от архитектуры процессора. Аналогичный правый сдвиг всегда дает 0 или -1 в зависимости от знака исходного числа (Сдвиг не влияет на старший бит, отвечающий за знак).
  • Строки, содержащие шестнадцатеричные числа теперь всегда обрабатываются как строки и не обрабатываются как числа: is_numeric(«0xFF») теперь false, раньше было true со всеми вытекающими.
  • Целые числа в 64-х битных билдах для Windows теперь представляются в виде 64-х битных, а не как раньше, 32-х, что делало использование х64 сборок на Windows бессмысленным занятием, если нужны манипуляции с большими числами.
  • Удалена поддержка модификатора /e в PCRE. Аналогичная функциональность может быть реализована функцией preg_replace_callback().
  • Добавлена поддержка type-hint'ов для скалярных типов. Ранее контроль типов был возможен только для классов, интерфейсов, массивов и типа callable.
  • Удалены старые и не поддерживаемые SAPI и расширения.

Более подробный список изменений на английском языке можно найти в указанных источниках:
php.net
github.com/php/php-src/blob/php-7.0.0alpha1/UPGRADING
Tags: php 7php
Hubs: Website development PHP
Total votes 35: ↑31 and ↓4 +27
Comments 96
Comments Comments 96

Popular right now

Top of the last 24 hours