На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

PHP 8.0 поставляется с типами объединений, JIT-компиляцией



PHP 8.0, крупное обновление популярного динамического языка для веб-программирования на стороне сервера, теперь доступен в качестве рабочей версии, в которой представлены типы объединений, именованные аргументы, атрибуты и компиляция точно в срок.

Типы объединения принимают значения нескольких различных типов. Они позволяют передавать аргументы функции на основе имени параметра, а не позиции параметра. Это делает значение аргумента самодокументируемым, делает аргументы независимыми от порядка и позволяет произвольно пропускать значения по умолчанию.

В то время как PHP уже поддерживал два специальных типа объединения (Тип или Null и массив или Traversable), произвольные типы объединения не поддерживались языком, который вместо этого использовал аннотации phpdoc. После универсальных типов типы объединения считались самой большой “дырой” в системе объявления типов PHP.

Поддержка типов объединения позволяет перемещать больше информации о типах из phpdoc в сигнатуры функций, при этом такие преимущества, как принудительное применение типов и меньшая вероятность устаревания информации о типах или пропуска крайних случаев. Кроме того, типы проверяются во время наследования и доступны через отражение. Синтаксис также менее шаблонен, чем в phpdoc.

Другие ключевые возможности в PHP 8.0:

  • Включены два механизма компиляции JIT: трассировка JIT и функция JIT. Трассировка JIT показывает примерно в 3 раза лучшую производительность на синтетических тестах и в 1,5-2 раза лучшую производительность для некоторых длительно работающих приложений. Типичная производительность приложения находится на уровне PHP 7.4.
  • Подобно аннотациям в Java и атрибутам на таких языках, как C# и Rust, атрибуты PHP предоставляют форму структурированных синтаксических метаданных для объявлений классов, констант, функций, методов, параметров и свойств. Атрибуты представляют собой специально отформатированный текст, заключенный в >> и >> путем повторного использования существующих токенов T_SL и T_SR.
  • Именованные аргументы позволяют передавать аргументы функции на основе имени параметра, а не позиции параметра. Это делает значение аргумента самодокументируемым, а также делает аргументы независимыми от порядка и позволяет произвольно пропускать значения по умолчанию.
  • В качестве улучшения кодирования используется оператор nullsafe, ?->, с полным коротким замыканием.
  • Слабые карты позволяют создавать карту из объектов с произвольными значениями, не препятствуя сбору мусора для объектов, используемых в качестве ключей. Если ключ объекта собран в виде мусора, он будет удален с карты. Общий вариант использования слабых карт состоит в том, чтобы связать данные с отдельными экземплярами объектов, не требуя, чтобы они оставались живыми и эффективно пропускали память в длительных процессах.
  • Продвижение свойств конструктора вводит синтаксис короткой руки, который позволяет комбинировать определение свойств и конструктор. Эта возможность позволяет решить ситуацию, в которой для определения простых объектов значений требуется много стандартного кода, поскольку все свойства необходимо повторить не менее четырех раз.
  • Добавлена возможность выражения соответствия, аналогичная переключению, но с более безопасной семантикой и возможностью возвращать значения.




Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегизаметки, php





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Как изменить разрешения на файл с помощью C#
Урок 18. Сборщик мусора и метод finalize в Java


© upread.ru 2013-2022
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.