Вийшла перша бета-версія PHP 8.0.0

3 хв. читання

Команда PHP випустила першу бета-версію нової гілки — PHP 8.0.0. Завантажити її можна тут. Друга бета запланована на 20 серпня, а реліз мають підготувати до 26 листопада. Також опубліковані PHP 7.3.21, PHP 7.2.33, PHP 7.4.9 з виправленнями та оновленнями.

Розробники нагадують, що PHP 8.0.0 — рання і тестова версія, тож не варто її використовувати в продакшені, а про помилки просять повідомляти через систему звіту.

Серед оновлень у цій гілці:

  • Підтримка union-типів — наборів з двох або більше типів, які вказують, що можна використати будь-який з них. Наприклад: public function foo(Foo|Bar $input): int|float;.

  • Компілятор Just-In-Time (JIT) додали до розширення opcache.

  • Підтримка Attributes, або анотацій, з якими легше додавати метадані до класів, адже не треба використовувати docblocks.

  • Доданий клас ValueError.

  • Підтримка виразів match.

  • Будь-яку кількість функціональних параметрів тепер можна замінити варіативним аргументом, якщо типи сумісні. Наприклад, можна робити так:

        class A {
            public function method(int $many, string $parameters, $here) {}
        }
        class B extends A {
            public function method(...$everything) {}
        }
  . "static" (as in "late static binding") can now be used as a return type:

        class Test {
            public function create(): static {
                return new static();
            }
        }
  • Можна отримати ім'я класу об'єкта за допомогою $object :: class. Результат буде такий самий, як у get_class($object).

  • Розширення JSON тепер є невіддільним складником PHP і його неможливо вимкнути.

  • Вираз throw для обробки винятків.

  • Лаконічніший синтаксис — можна водночас оголошувати властивості та вказувати конструктор, наприклад:

class Point {
    public function __construct(
        public float $x = 0.0,
        public float $y = 0.0,
        public float $z = 0.0,
    ) {}
}
  • Новий інтерфейс Stringable, призначений для розпізнавання рядкових типів або даних, які можна перетворити на рядок. Щоразу, коли клас виконує __toString (), він автоматично реалізує інтерфейс за кулісами, тож вручну це робити не потрібно.

Це велике оновлення, тож критичних змін у цьому випуску чимало. З усім списком можна ознайомитись на сторінках UPGRADING і NEWS.

Помітили помилку? Повідомте автору, для цього достатньо виділити текст з помилкою та натиснути Ctrl+Enter
Codeguida 5.6K
Приєднався: 8 місяців тому
Коментарі (0)

    Ще немає коментарів

Щоб залишити коментар необхідно авторизуватися.

Вхід / Реєстрація