Testarea beta a PHP 8 a început

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

Principalul inovații PHP 8:

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

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

  • Сокращённый синтаксис определения классов, позволяющий объединить определение конструктора и свойств.
  • Новый тип возвращаемых значений — static.
  • Новый тип — mixt, который может применяться для определения приёма функцией параметров с разными типами.
  • expresie arunca для обработки исключений.
  • WeakMap для создания объектов, которыми можно пожертвовать при сборке мусора (например, для хранения необязательных кэшей).
  • Oportunitate использования выражения «::class» для объектов (аналог вызова get_class()).
  • Oportunitate определения в блоке catch исключений, не привязанных к переменным.
  • Oportunitate оставления символа запятой после последнего элемента в списке параметров функции.
  • Interfață nouă Se poate înșira для идентификации любых строковых типов или данных, которых можно преобразовать в строку (для которых доступен метод__toString()).
  • Optiune noua str_contains(), упрощённый аналог strpos для определения вхождения подстроки, а также функции str_starts_with() и str_ends_with() для проверки совпадений в начале и конце строки.
  • Funcție adăugată fdiv(), выполняющая операцию деления без вывода ошибки в случае деления на ноль.
  • Изменена логика соединения строк. Например, выражение ‘echo «sum: » . $a + $b’ ранее интерпретировалось как ‘echo («sum: » . $a) + $b’, а в PHP 8 будет обработано как ‘echo «sum: » . ($a + $b)’.
  • Ужесточена проверка арифметических и битовых операций, например, выражения «[] % [42]» и «$object + 4» будут приводить к ошибке.
  • Implementat стабильный алгоритм сортировки, в котором при разных запусках сохраняется порядок следования одинаковых значений.
  • Sursa: opennet.ru

Adauga un comentariu