PHP-Дайджест № 222-4 (26 апреля – 31 мая 2022)

в 10:44, , рубрики: digest, laravel, php, rfc, symfony, yii, дайджест, Разработка веб-сайтов

PHP

Вышли следующие версии PHP:

Обновления в основном посвящены устранению ошибок в реализации языка и в стандартной библиотеке. В том числе исправлено несколько ошибок, потенциально приводящих к утечке памяти.

Кроме того объявлено о доступности версии 8.2.0 Alpha 1. Подробнее обсудим это событие уже в следующем дайджесте. Кстати, если вы интересуетесь версией 8.2, не пропустите статью с, пожалуй, первым тестом производительности этой версии.

PHP Foundation

  • Выбраны те разработчики, чью работу над PHP будет спонсировать PHP Foundation. Ими стали: Derick Rethans, George Peter Banyard, Ilija Tovilo, Jakub Zelenka, Máté Kocsis, и Arnaud Le Blanc.

  • В реальном времени коммиты в ядро PHP можно видеть в основном репозитории на Гитхабе: https://github.com/php/php-src/commits/master, а за обсуждениями следить в листе рассылки: https://externals.io/, который теперь открыт для всех.

  • Опубликовано интервью с разработчиками, которых спонсирует PHP Foundation: https://thephp.foundation/blog/2022/05/06/interview-with-core-developers/
    Прочтите, что они планируют сделать в ближайшем будущем.

PHP-FIG

Стандарт "PER Coding Style", идущий на замену PSR-12, получил тег 1.0.0

PHPStorm

Вышла очередная превью-версия популярной IDE PhpStorm 2022.1.2.

RFC

Expand deprecation notice scope for partially supported callables

https://wiki.php.net/rfc/partially-supported-callables-expand-deprecation-notices

Краткое содержание:

  • В PHP есть тип callable

  • Он полон странных вещей. К примеру строка 'someClass::someMethod' является валидным значением типа callable (то есть пройдет контроль типа callable, к примеру в аргументе функции, а функция is_callable() вернет true), но при этом то же значение не может быть использовано как аргумент функции call_user_func()

  • Такие значения автор RFC называет "частично-поддерживаемыми callable" и предлагает объявить устаревшими в PHP 8.2 и полностью удалить в PHP 9.0.

Предложение находится в фазе голосования, всё говорит о том, что оно будет принято.

Fetch properties in const expressions

https://wiki.php.net/rfc/fetch_property_in_const_expressions

Идея: а давайте, если значение какого-либо свойства объекта известно уже на этапе компиляции, дадим возможность использовать это свойство в константных выражениях?

Пример:

enum A: string {
    case A = 'A';
    case B = 'B';
    const CASES = [self::A->value => self::A, self::B->value => self::B];
}

От автора дайджеста: давно уже не видел ничего более странного...

Short Closures 2.0

https://wiki.php.net/rfc/auto-capture-closure

И снова седая ночь Nuno Maduro предлагает добавить в PHP еще один синтаксис для функций.

Помимо обычных глобальных функций, глобальных рантаймовых функций, анонимных функций и стрелочных функций, автор желает видеть еще и многострочные стрелочные функции:

$repository = ... ;
$guestIds = ... ;

$guests = array_filter($users, fn ($user) {
    $guest = $repository->findByUserId($user->id);
    return $guest !== null && in_array($guest->id, $guestsIds);
});

Помимо многострочности автор также предлагает добавить к стрелочным функциям конструкцию замыкания use, не приводя, впрочем, достаточно внятных аргументов - для чего? Ведь стрелочные функции по определению замыкают весь контекст своего создания? Видимо, чтобы было.

Предложение находится в обсуждении: https://externals.io/message/117888

Body-less methods

https://github.com/php/php-src/issues/8420

Предлагается дать возможность программисту не обозначать пустое тело функции (метода) фигурными скобками в тех случаях, когда внутри этих скобок ничего нет:

class Point {
    public function __construct(
        public float $x = 0.0,
        public float $y = 0.0,
        public float $z = 0.0,
    );
}

Или, к примеру:

class Foo {
    public static function bar(int $baz): void;
}

Идет обсуждение предложения: https://externals.io/message/117771

Прочее

В ответ на отклонение RFC с перегрузкой операторов Jordan LeDoux написал открытое письмо о будущем объектов и операторов в PHP: https://externals.io/message/117678, в котором желающие приглашаются принять участие в дискуссии на тему "Какие всё-таки операторы должны быть определены на множестве объектов и каким образом?".

Новости фреймворков

Symfony

Новости

Главная новость это, безусловно, выход версии фреймворка Symfony 6.1.

Полный список нововведений слишком велик, версия получилась достаточно объемная по новым фичам, поэтому оставлю лишь ссылку: https://symfony.com/blog/symfony-6-1-0-beta1-released

Помимо того, вышли версии Symfony 6.0.9, Symfony 5.4.9, и даже Symfony 4.4.42, содержащие в основном исправления найденных багов.

Что почитать и посмотреть?

Laravel

Новости

Вышли версии:

Библиотеки, компоненты, пакеты

  • Состоялся релиз версии 1.0 проекта Bouncer - универсальная система управления правами и разрешениями для Laravel.

  • Laravel Wallet: простая, но функциональная реализация системы "лицевых счетов" для пользователей вашего проекта.

Что почитать?

Yii

Каких-то революционных новостей касательно Yii не замечено, но радует то, что процесс разработки в целом идёт. Это видно по релизам отдельных пакетов, которые войдут в состав Yii 3:

Общий прогресс подготовки к релизу Yii 3 составляет на данный момент 60%

Что почитать на Хабре?

Новости одной строкой

Никита Попов опубликовал статью "The opcache optimizer", где подробно разбирает вопрос работы оптимизатора опкэша, ставшего с версии 8.1 частью ядра.

Роман Пронский, который ранее вёл этот дайджест, выпустил свою версию обзора значимых событий в мире PHP за май: "PHP Annotated - May 2022".

Вышла содержательная статья "Message Processing in PHP — Symfony Messenger, Laravel Queues and Ecotone", сравнивающая различные реализации систем обмена сообщениями в популярных фреймворках.

Дмитрий Елисеев опубликовал исходный код проекта своего сайта с полной автоматизацией и использованием Docker

Вместо заключения

Подготовлено при активном участии сообщества телеграм-чата "PHP Russian Talks".

Замечания по текущему выпуску и предложения для следующего можете отправлять автору в личку или в указанный выше чат.

Автор: Альберт Степанцев

Источник

* - обязательные к заполнению поля


https://ajax.googleapis.com/ajax/libs/jquery/3.4.1/jquery.min.js