После года разработки представлен релиз языка программирования PHP 7.4, пишет OpenNET. Новая ветка включает серию новых возможностей, а также несколько изменений, нарушающих совместимость.
Ключевые улучшения в PHP 7.4:
- типизированные свойства — свойства классов теперь могут включать объявления типов;
- сокращённый синтаксис определения функций «fn (parameter_list) => expr» с привязкой области видимости по значению;
- сокращённый оператор присвоения «? =», который может использоваться для определения значения по умолчанию;
- ограниченная возможность сохранения иерархии наследования типов в производных от них типах возвращаемых значений или возможность преобразования иерархии исходных типов на противоположную в производных типах аргументов;
- оператор распаковки внутри массивов «…$var», позволяющий выполнять подстановку существующих массивов при определении нового массива;
- возможность наглядного оформления больших чисел с разделителями в числовых литералах (1_000_000_00);
- поддержка слабых ссылок, позволяющих сохранить ссылку на объект, но не блокирующих удаление связанного объекта сборщиком мусора;
- новый механизм сериализации объектов (комбинация Serializable и __sleep ()/__wakeup ()), пришедший на смену интерфейсу Serializable, который будет объявлен устаревшим;
- разрешена генерация исключений из метода __toString ();
- добавлена поддержка упреждающей загрузки кэша объектного кода. Для настройки добавлен параметр opcache.preload, через который можно указать PHP-скрипт, который будет скомпилирован и запущен при запуске сервера. Данный скрипт может загрузить опкод других файлов через их прямое включение или при помощи функции opcache_compile_file ();
- в расширение Hash добавлена функция crc32c для вычисления контрольных сумм с использованием полинома Кастаньоли;
- в функцию password_hash () добавлена поддержка методов хэширования паролей argon2i и argin2id, в реализации библиотеки Sodium, если PHP собирается без libargon;
- добавлена функция mb_str_split (), аналогичная str_split (), но оперирующая не байтами, а позициями символов в многобайтовой строке;
- в функции strip_tags () добавлена возможность передачи массива с именами тегов;
- в proc_open () разрешено перечисление операндов в массиве, вместо указания строки для запуска, а также реализована возможность перенаправления потоков и поддержка нулевого файлового дескриптора;
- из базовой поставки исключены расширения Firebird/Interbase, Recode и WDDX. Данные расширения теперь распространяются через PECL;
- ряд функций и возможностей переведён в разряд устаревших.
Релоцировались? Теперь вы можете комментировать без верификации аккаунта.