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

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

PHP

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

  • PHP 8.1.6

  • PHP 8.0.9

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

Кроме того объявлено о доступности версии 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, содержащие в основном исправления найденных багов.

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

  • Советы на тему того, какие библиотеки использовать для улучшения качества кода в проектах на Symfony: https://dev.to/rezende79/the-4-basic-libraries-every-symfony-project-needs-to-improve-code-quality-3ejh (впрочем, советы достаточно банальные)

  • Серия статей "Get started with Symfony 6 for beginners" от Azay Karimli: первая часть, вторая часть, третья часть. Неплохое дополнение официальной документации.

  • Ваш покорный слуга провел семинар для начинающих "Symfony 6: Быстрый старт", на котором пытался донести мысль о том, что Symfony - это простой и дружелюбный для новичков фреймворк.

Laravel

Новости

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

  • Laravel 9.12

  • Laravel 9.13

  • Laravel 9.14

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

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

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

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

  • Руководство по решению проблемы "N+1 запросов" в Laravel (но пригодится и пользователям других фреймворков): https://laravel-news.com/laravel-n1-query-problems

  • Неплохая статья о рефакторинге "толстых" контроллеров в Laravel: https://laravel-news.com/controller-refactor

  • Интересная статья с обзором админ-панелей для Laravel: https://dev.to/forestadmin/the-guide-to-laravel-admin-panels-2g5j

Yii

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

  • Log 2.0

  • HTML 2.4

  • Console 1.1

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

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

  • Статьи Антона Титова о распределенных Workflow. Первая и вторая части.

  • Статья Альберта Степанцева об асинхронности, конкурентности, параллельности и многопоточности.

  • Короткая, но небезынтересная статья об автотестах в... битриксе.

  • Очередное руководство по настройке XDebug совместно с Docker.

  • Статья о работе с профайлером prodprofiler.

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

Никита Попов опубликовал статью "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://habr.com/ru/post/671074/


Интересные статьи

Интересные статьи

Решения для больших компаний обычно должны выдерживать высокие нагрузки. Когда в штате много десятков тысяч человек, и значительная доля из них ежедневно пользуются ...
Эту неделю астрологи объявили неделей бэка: сразу несколько встреч и по .NET и по Java. А еще начали появляться неожиданные сочетания внутри одного мероприятия, например: JavaScript и DevOps или ...
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.2 и другие релизы, Stringable RFC, обзор PHP 8, порция полезных инструментов, 4 ближайших митапа, видеозаписи с конференци...
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.0 RC5, Xdebug 2.8, критическая уязвимость в PHP-FPM, новости из PHP Internals, порция полезных инструментов, подкасты, стр...
Если Вы используете в своих проектах инфоблоки 2.0 и таблицы InnoDB, то есть шанс в один прекрасный момент столкнуться с ошибкой MySQL «SQL Error (1118): Row size too large. The maximum row si...