Началось альфа-тестирование PHP 8.1
Автор
Сообщение
news_bot ®
Стаж: 6 лет 9 месяцев
Сообщений: 27286
Представлен первый альфа-выпуск новой ветки языка программирования PHP 8.1. Релиз намечен на 25 ноября. Основные новшества, уже доступные для тестирования или планируемые к реализации в PHP 8.1:
- Добавлена поддержка перечислений, например, теперь можно использовать следующие конструкции:
enum Status {
case Pending;
case Active;
case Archived;
}
class Post
{
public function __construct(
private Status $status = Status::Pending;
) {}
public function setStatus(Status $status): void
{
// …
}
}
$post->setStatus(Status::Active);
- Добавлена поддержка легковесных потоков, именуемых файберами (Fiber) и позволяющими управлять потоками выполнения на низком уровне. Поддержку файберов планируется добавить во фреймворки Amphp и ReactPHP.
$fiber = new Fiber(function (): void {
$valueAfterResuming = Fiber::suspend('after suspending');
// …
});
$valueAfterSuspending = $fiber->start();
$fiber->resume('after resuming');
- Улучшена реализация кэша объектного кода (opcache), в которой появилась возможность кэширования информации о наследовании классов. Оптимизация позволила поднять производительность некоторых приложений на 5-8%.
- Оператор распаковки внутри массивов "...$var", позволяющий выполнять подстановку существующих массивов при определении нового массива, расширен поддержкой строковых ключей (ранее поддерживались только цифровые идентификаторы). Например, теперь можно использовать в коде:
$array1 = ["a" => 1];
$array2 = ["b" => 2];
$array = ["a" => 0, ...$array1, ...$array2];
var_dump($array); // ["a" => 1, "b" => 2]
- Появился новый тип "never", который можно использовать для информирования статических анализаторов о том, что функция прекращает выполнение программы, например, вызывая исключение или выполняя функцию exit.
function dd(mixed $input): never
{
exit;
}
- Предложена новая функция array_is_list, позволяющая определить, что ключи в массиве расположены в порядке увеличения числовых значений, начиная с 0:
$list = ["a", "b", "c"];
array_is_list($list); // true
$notAList = [1 => "a", 2 => "b", 3 => "c"];
array_is_list($notAList); // false
$alsoNotAList = ["a" => "a", "b" => "b", "c" => "c"];
array_is_list($alsoNotAList); // false
- Для запрета переопределения констант родительского класса теперь можно использовать ключевое слово "final".
class Foo
{
final public const X = "foo";
}
class Bar extends Foo
{
public const X = "bar";
> Fatal error: Bar::X cannot override final constant Foo::X
}
- Предложены функции fsync и fdatasync для принудительного сохранения изменений из дискового кэша.
$file = fopen("sample.txt", "w");
fwrite($file, "Some content");
if (fsync($file)) {
echo "File has been successfully persisted to disk.";
}
fclose($file);
- Добавлена возможность использования префиксов "0o" и "0O" для восьмеричных чисел, помимо ранее применявшегося префикса "0".
016 === 0o16; // true
016 === 0O16; // true
- Предложено выборочно ограничить применение $GLOBALS, что приведёт к нарушению обратной совместимости, но даст возможность значительно ускорить операции с массивами. Например, рассматривается возможность запрета записи в $GLOBALS и передачи $GLOBALS по указателю. Анализ 2000 пакетов показал, что только 23 из них затронет данное изменение.
Например, в случае одобрения предложения в 8.1 будет прекращена поддержка таких выражений, как:
$GLOBALS = [];
$GLOBALS += [];
$GLOBALS =& $x;
$x =& $GLOBALS;
unset($GLOBALS);
by_ref($GLOBALS);
- Продолжена работа по переводу функций c использования ресурсов на манипуляцию объектами. На объекты переведены функции finfo_* и imap_*.
- Объявлена устаревшей передача значений null в качестве аргументов внутренних функций, помеченных как non-nullable. В PHP 8.1 использование конструкций вида str_contains("string", null) будет приводить к предупреждению, а в PHP 9 к ошибке.
- Добавлена поддержка алгоритмов хэширования MurmurHash3 и xxHash.
===========
Источник:
OpenNet.RU
===========
Похожие новости
- Главная ссылка к новости (https://www.php.net/index.php#...)
- OpenNews: Отчёт о компрометации git-репозитория и базы пользователей проекта PHP
- OpenNews: Релиз языка программирования PHP 8.0
- OpenNews: Уязвимость в пакетном менеджере Composer, допускающая компрометацию PHP-репозитория Packagist
- OpenNews: Microsoft не станет заниматься поддержкой PHP 8.0 для Windows
- OpenNews: Релиз языка программирования PHP 7.4
Похожие новости:
- [Программирование, Symfony] Развертывание приложения Symfony в AWS Lambda (перевод)
- [PHP, JavaScript] Браузерные Push-уведомления на Javascript и PHP
- [Разработка веб-сайтов, PHP, Разработка мобильных приложений, Управление разработкой] Кто, где, когда: система компонентов для разделения зон ответственности команды
- [Разработка веб-сайтов, PHP, Symfony, Yii, Laravel] Зачем нужен static при объявлении анонимных функций?
- [PHP, Разработка мобильных приложений, Визуализация данных, Финансы в IT] Телеграмм-бот для анализа опционов
- [PHP, IT-инфраструктура, IT-стандарты, Бизнес-модели, Софт] Есть будущее у Fullstack-разработчиков?
- [PHP, Конференции] Уходим в кэш в высоконагруженных системах
- [PHP, Алгоритмы, Регулярные выражения] Как в PHP улучшить читаемость регулярных выражений (перевод)
- [PHP, Программирование, Анализ и проектирование систем] Модульный PHP монолит: рецепт приготовления
- [PHP, Я пиарюсь, Проектирование и рефакторинг] Чистим пхпшный код с помощью DTO
Теги для поиска: #_php
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 20:56
Часовой пояс: UTC + 5
Автор | Сообщение |
---|---|
news_bot ®
Стаж: 6 лет 9 месяцев |
|
Представлен первый альфа-выпуск новой ветки языка программирования PHP 8.1. Релиз намечен на 25 ноября. Основные новшества, уже доступные для тестирования или планируемые к реализации в PHP 8.1:
=========== Источник: OpenNet.RU =========== Похожие новости
|
|
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
Вы не можете прикреплять файлы к сообщениям
Вы не можете скачивать файлы
Текущее время: 25-Ноя 20:56
Часовой пояс: UTC + 5