Додаток 3. PHP 7

Наприкінці 2015 року побачила світ 7-а версія PHP. Це перший значний реліз за останні 11 років, з яких ним активно займались останні два роки. Zend Engine (двіжок PHP) став швидшим, менш вимогливим до пам’яті і з підтримкою 64-біт.

Як звітують деякі популярні ресурси в Інтернеті, перехід на цю версію з 5.x дозволив збільшити швидкодію їх сайтів удвічі. Компанія розробник ядра на своєму сайті Zend.com наводить наступні дані (більша кількість запитів за секунду означає кращий результат):

Продукт на PHP PHP 5.6 PHP 7
Magento 41 запит/сек 69 запит/сек
WordPress 191 запит/сек 374 запит/сек
Laravel 256 запит/сек 485 запит/сек

Нові можливості

Скалярні типи (англ. Scalar type declarations)

Можна задати тип (array, bool, float, int, string) для параметрів функції трьома способами.

1) none (типи не задаються)

function test($a, $b){
    // ...
}

2) coercive (примусове приведення до типів)

function test(int $a, int $b){
    // ...
}

3) strict (строгий режим)

Якщо спробувати «пропихнути» параметр не того типу, то PHP викине помилку. Щоб включити строгий режим перевірки, потрібно на початку (кожного) файлу, додати конструкцію declare, як показано нижче.

declare(strict_types=1);

function test(int $a, int $b){
    // ...
}

Оголошення типу значення, яке повертається

Додана можливість вказати тип змінної, яку повертає функція, метод чи замикання. Режими такі ж, як для параметрів.

function test($a, $b): int {
    // ...
}

Комбінований оператор порівняння

$a <=> $b

Повертає

  • -1, якщо ліва частина менша за праву;
  • 0, якщо вони рівні;
  • 1, якщо ліва частина більша за праву.

Комбінований оператор порівняння (англ. Combined comparison operator) особливо зручний для використання в кастомних функціях сортування. Також відовий як «spaceship operator».

Оператор об'єднання зі значенням NULL (англ. Null Coalescing operator)

Повертає перше значення, що існує і не є null

$value = $post_value ?? $default_value;

Анонімні класи

Анонімні класи підходять для невеликих задач:

$app -> setLogger(new class {
    public function log($msg) {
        // ...
    }
});

Також анонімний клас можна «розширити»:

new class extends SomeBase { … }

Перехоплення виняткових ситуацій і помилок

Стало можливим, наприклад, перехоплювати Fatal error.

try {
    // ...
} catch (Error $e) {
    $e->getMessage();
}

Цілочисельне діленння з intdiv

echo intdiv(5, 2); // 2

Функція особливо корисна для великих чисел.

Групування оголошень use

// PHP 5
use App\Library\Smth1;
use App\Library\Smth2;
use App\Library\Smth3;

// PHP 7
use App\Library\{Smth1, Smth2, Smth3}

Підтримка Юнікод керуючих (escape-) послідовностей

echo "I \u{2764} PHP!"; // I ❤ PHP!

Генерація надійних випадкових чисел

В PHP 7 введено дві нові функції, які можуть бути використані для криптографічно стійкої генерації псевдовипадкових чисел: random_bytes() і random_int().

Цим список не обмежується. За детальнішою інформацією зверніться на офіційний сайт php.net.

Застарілі або видалені фічі

  • Конструктори в дусі PHP 4 позначено як застарілі
  • Функції ereg_xxx, mysql_xxx та ряд інших були видалені
  • Альтернативні PHP-теги <% echo '...'; %> <script language="php">echo '...';</script> видалені
  • та інше.

Екскурс в минуле

Між PHP 5 і PHP 7 мала бути 6-а версія, але не склалось. В PHP 6 хотіли реалізувати пітримку Юнікод (англ. Unicode) та вже в 2010 році стало зрозуміло, що об’єм робіт (переписування модулів, створення нових і т.д.) виявився непід’ємний і від цієї амбітної цілі відмовились (або, якщо завгодно, відклали на потім). Щоб не спантеличувати розробників, версію PHP 6 пропустили, хоча чимало корисних фіч увішли у версії PHP 5.3 та 5.4.

HipHop для PHP від Facebook

HipHop був створений розробниками соціальної мережі Facebook для економії ресурсів їх серверів. HipHop програмно перетворює PHP код в оптимізований код на C++, а потім використовує компілятор g++ для його компіляції. HipHop включає в себе транслятор коду, альтернативну реалізацію середовища виконання PHP, а також найбільш поширені PHP-розширення (англ. PHP Extensions), переписані на C з метою підвищення продуктивності.

Поточна версія HipHop, відома як HHVM (або віртуальна машина HipHop, англ. HipHop Virtual Machine) була опублікована з відкритим вихідним кодом в кінці 2011 року.

До появи PHP 7 ця розробка приблизно вдвічі обходила рідний двіжок PHP по продуктивності. Тоді як зараз вони приблизно зрівнялись.

results matching ""

    No results matching ""