Свежая подборка со ссылками на новости и материалы. В выпуске: Fibers для асинхронного PHP, первые нативные атрибуты, короткий match и другие RFC предложения для PHP 8.1, инструменты, много видео, статьи и подкасты.
Приятного чтения и с наступающим Новым годом!
use AmpDelayed;
use AmpLoop;
use function Ampasync;
use function Ampawait;
// Обратите внимание, что замыкание объявляет int возвращаемым типом, а не промис или генератор, но при этом исполняется как корутина.
$callback = function (int $id): int {
return await(new Delayed(1000, $id)); // Await promise resolution.
};
// Вызов $callback возвращает int, but is executed asynchronously.
$result = $callback(1); // Вызывает корутину внутри этого зеленого потока, занимает 1 секунду.
var_dump($result);
// Одновременно запускает два новых зелёных потока, ждет их результата в этом основном зелёном потоке.
$result = await([ // Выполняется одновременно, вызов займет только 1 секунду.
async($callback, 2),
async($callback, 3),
]);
var_dump($result); // Выполнится через 2 секунды после старта всего скрипта.
#[Deprecated]
для пометки устаревших методов и функций. Если вызвать функцию или метод, которые помечены атрибутом #[Deprecated]
, то PHP выбросит ошибку уровня E_DEPRECATED
.
Устаревшие классы, свойства, константы пока нельзя будет пометить таким атрибутом.
Аналогичный, но чуть более продвинутый атрибут уже есть в PhpStorm 2020.3. Кроме отметки, он предлагает еще и вариант замены. Правда, из-за того что нативный атрибут может быть только final, пока неясно как красиво использовать оба.
Во время обсуждения и голосования за именованные аргументы, был один наиболее спорный момент — это проблемы обратной совместимости при переименовании. Разработчики библиотек справедливо указывали на то, что имена параметров публичных методов теперь станут часть API и их нельзя будет легко изменить.
На эту тему даже обсуждался отдельный RFC: Named Parameters explicit opt in.
Теперь предлагается более простое и понятное решение — Добавить атрибут для параметров, в котором можно указывать алиас, то есть альтернативное имя.
<?php
use NamedParameterAlias;
// Old function signature:
function log($arg1) {}
// New function signature introduces better name
function log(#[NamedParameterAlias("arg1")] $message) {}
log(arg1: "Hello World!");
log(message: "Hello World!");
Пока открытый вопрос будет ли добавлен флаг Attribute::IS_REPEATABLE
. Если да, то можно будет добавить сколько угодно алиасов для параметра.
match
в PHP 8 предлагается как альтернатива switch
.
Иногда можно встретить код вида switch(true) { ...
, вместо цепочки if-elseif-...else
. В таком же стиле можно использовать и match(true)
.
Данный RFC предлагает сделать условие в match
необязательным а поведение match(true)
дефолтным.
В обсуждении много критики на тему избыточности такого «сахара».
php -a
.
В отличие от bobthecow/psysh, встроенный в PHP шелл умеет корректно обрабатывать фатальные ошибки. Так что данное улучшение может быть полезным для других шеллов.
is_list()
, которая вернет true
, если передать в нее массив с последовательными целочисленными ключами 0, 1, 2 ... count($value)-1
.
class Foo
{
public $bar;
public $baz;
public function withProperties($bar, $baz)
{
$self = clone $this;
$self->bar = $bar;
$self->baz = $baz;
return $self;
}
}
class Foo
{
public $bar;
public $baz;
public function withProperties($bar, $baz)
{
return clone $this with {
bar: $bar,
baz: $baz,
};
}
}
Сегодня будет второй стрим по PHP Дайджесту. Все новости и ссылки из выпуска + больше деталей, обзор присланного, интересное но не вошедшее в выпуск, результаты розыгрыша и новый конкурс со слониками.
Начало в 20:00 Москва, Минск / 19:00 Киев.
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку хабра или телеграм.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP Дайджест № 194
Apple возобновила переговоры с OpenAI о возможности внедрения ИИ-технологий в iOS 18, на основе данной операционной системы будут работать новые…
Конкурсный управляющий российской «дочки» Google подготовил 23 иска к участникам рекламного рынка. Общая сумма исков составляет 16 млрд рублей –…
Google завершил обновление основного алгоритма March 2024 Core Update. Раскатка обновлений была завершена 19 апреля, но сообщил об этом поисковик…
У частных продавцов на Авито появилась возможность составлять текст объявлений с помощью нейросети. Новый функционал доступен в категории «Обувь, одежда,…
24 апреля 2024 года в Москве состоялась церемония вручения наград международного конкурса Workspace Digital Awards. В этом году участниками стали…
27 июня Яндекс проведет гик-фестиваль Young Con для студентов и молодых специалистов, которые интересуются технологиями и хотят работать в IT.…