PHP 7 Alpha 1. Що нового


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().
  • Видалені старі і не підтримувані SAPI і розширення.
Більш докладний список змін англійською мовою можна знайти в зазначених джерелах:
php.net
github.com/php/php-src/краплі/php-7.0.0alpha1/UPGRADING

Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.