Почалося бета-тестування PHP 8

представлений перший бета-випуск нової гілки мови програмування PHP 8. Реліз заплановано на 26 листопада. Одночасно сформовані коригувальні випуски PHP 7.4.9, 7.3.21 та
7.2.33, у яких усунуті помилки та вразливості, що накопичилися.

Основні нововведення PHP 8:

  • включення JIT-компілятора, Застосування якого дозволить підвищити продуктивність.
  • Підтримка іменованих аргументів функцій, дозволяють передавати на функцію значення прив'язці до імен, тобто. можна передавати аргументи у довільному порядку та визначати необов'язкові аргументи. Наприклад, "array_fill(start_index: 0, num: 100, value: 50)".
  • При викликі методів дозволено застосування оператора «?», який дозволяє ініціювати виклик лише, якщо метод присутній, що дозволяє уникнути зайвих перевірок повернення значення «null». Наприклад, $dateAsString = $booking->getStartDate()?->asDateTimeString()»;
  • Підтримка union-типів, визначальних колекції двох і більше типів (наприклад «public function foo(Foo|Bar $input): int|float;»).
  • Підтримка атрибутів (анотацій), що дозволяють прив'язати метадані (наприклад, відомості про типи) до класів без використання синтаксису Docblock.
  • Підтримка виразів матч, які, на відміну від switch, можуть повертати значення, підтримують комбінування умов, використовують суворе порівняння типів і не вимагають вказівки «break».

    $result = match($input) {
    0 => "hello",
    '1', '2', '3' => «world»,
    };

  • Скорочений синтаксис визначення класів, що дозволяє об'єднати визначення конструктора та властивостей.
  • Новий тип значень, що повертаються. статичний.
  • Новий тип змішаний, який може застосовуватися визначення прийому функцією параметрів з різними типами.
  • вираз кидати для обробки винятків.
  • WeakMap для створення об'єктів, якими можна пожертвувати під час складання сміття (наприклад, для зберігання необов'язкових кешів).
  • Можливість використання виразу «::class» для об'єктів (аналог виклику get_class()).
  • Можливість визначення у блоці catch винятків, не прив'язаних до змінних.
  • Можливість залишити символ комою після останнього елемента у списку параметрів функції.
  • Новий інтерфейс Струнний для ідентифікації будь-яких рядкових типів або даних, яких можна перетворити на рядок (для яких доступний метод __toString()).
  • Нова функція str_contains(), спрощений аналог strpos для визначення входження підрядка, а також функції str_starts_with() та str_ends_with() для перевірки збігів на початку та в кінці рядка.
  • Додана функція fdiv(), що виконує операцію поділу без виведення помилки у разі поділу на нуль
  • Змінено логіка з'єднання рядків. Наприклад, вираз 'echo «sum:». $a + $b' раніше інтерпретувалося як 'echo («sum:» . $a) + $b', а в PHP 8 буде оброблено як 'echo «sum:». ($a + $b)'.
  • Посилена перевірка арифметичних та бітових операцій, наприклад, вирази «[] % [42]» та «$object + 4» призводитимуть до помилки.
  • Реалізовано стабільний алгоритм сортування, у якому за різних запусках зберігається порядок слідування однакових значень.
  • Джерело: opennet.ru

Додати коментар або відгук