PHP Дайджест № 207 (29 июня – 12 июля 2021)

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

Подборка свежих новостей и материалов из мира PHP. В выпуске: третья альфа PHP 8.1 — список новых возможностей и статус последних предложений; readonly-свойства — Nikolas Grekas и другие голосуют против из-за проблем с клонированием; автор Psalm покинул проект и PHP — работу подхватили другие мейнтейнеры; в ReactPHP добавили дефолтный ивент-луп — приложения теперь выглядят совсем как на ноде; Laravel 9 выйдет в январе и будет требовать PHP 8.0. А также другие новости, порция полезных инструментов, статьи и видео.

Приятного чтения!

Новости


  • PHP 8.1.0 alpha 3


    Третья и последняя альфа доставлена по расписанию. Следующим выпуском будет первая бета PHP 8.1.
    Что нового будет в PHP 8.1
    • Enum они же перечисления RFC;
    • Новый тип never для возвращаемых значений RFC;
    • Файберы RFC;
    • Финальные константы в классах RFC;
    • Оператор распаковки поддерживает массивы со строковыми ключами RFC;
    • Объявлено устаревшим преобразование float в int, где теряется дробная часть RFC;
    • Интерфейс Serializable объявлен устаревшим RFC;
    • Запись восьмеричных чисел с префиксом 0o RFC;
    • Ограничено использование $GLOBALS RFC;

    Полный список изменений можно посмотреть на php.watch или stitcher.io.

    Под вопросом остаются еще следующие фичи:
    • [RFC] Partial Function Application — отклонен по результатам голосования;
    • [RFC] Property Accessors — не выдвинут на голосование;
    • [RFC] First-class callable syntax — на голосовании и проходит;
    • [RFC] Readonly properties 2.0 — проходит, подробнее ниже;
    • [RFC] New in initializers — на голосовании и проходит;
    • [RFC] Pipe Operator v2 — не проходит;
    • [RFC] Is_literal — не проходит;

  • Обновления актуальных веток: PHP 8.0.8, PHP 7.4.21, PHP 7.3.29

PHP Internals


  • [RFC] Readonly properties 2.0


    В качестве альтернативы довольно сложному и громоздкому предложению по акссессорам свойств, Никита выдвинул на голосование RFC по readonly-свойствам.

    Предлагается добавить модификатор readonly для свойств. Такие свойства нельзя будет изменить после инициализации.
    class User {
        public function __construct(
            public readonly string $name
        ) {}
    }
    
    $user = new User('Nikita');
    echo $user->name; // Ok
    $user->name = 'Roman'; // Error
    

    Подробнее о readonly-свойствах в подкасте audio PHP Internals News #90 с Никитой Поповым.

    Споры при голосовании разгорелись из-за того, что readonly-свойства не очень хорошо сочетаются с клонированием:

    Пример:
    class Point {
        public function __construct(
            public readonly float $x,
        ) {}
    
        public function withX(float $x): static {
            // Вот так сработает:
            return new static($x);
    
            // А вот так не будет работать:
            $clone = clone $this;
            $clone->x = $x; // Error: Cannot modify readonly property
            return $clone;
        }
    }
    

    В будущем для решения этой проблемы, возможно, будет добавлена конструкция clone with или ассиметричные модификаторы доступа.

    А пока Brent Roose из Spatie предложил трейт Cloneable.

    Кстати, тот же Brent Roose отметил, что с введением readonly-свойств, кажется неплохой идеей разрешить такие свойства в интерфейсах:
    interface HasUuid
    {
        public readonly string $uuid;
    }
    


Инструменты


  • thecodingmachine/safe8 — Все стандартные функции PHP, обернутые так, чтобы они бросали исключения, а не возвращали false.
  • humbug/php-scoper — Инструмент добавляет префикс ко всем неймспейсам в указанной папке. Может пригодиться, когда необходимо использовать несколько версий одного пакета. Подробнее в посте.
  • IvanGrigorov/VMValidator — Простой валидатор на основе атрибутов PHP 8, если вдруг вам не нравится symfony/validator.
  • voku/anti-xss — Пакет для защиты от XSS с простым API.


Symfony


  • Создание SaaS-продукта с помощью Symfony — Советы из личного опыта автора.
  • video Отладка консольных команд Symfony с Xdebug 3
  • Неделя Symfony #758 (5-11 июля 2021)


Laravel


  • Laravel 9 выйдет в январе 2022 (вместо ноября). Он будет основан на компонентах Symfony 6 и поэтому минимальной версией PHP для него будет 8.0.
  • Алгоритмическая сложность (Big O) отношения One-Of-Many в Laravel
  • habr Проверка тестов PHP API на соответствие определениям OpenAPI — пример Laravel
  • video Что нового в Laravel (#4) 2021-07-07


Async PHP


  • Вышел reactphp/event-loop v1.2.0, в котором сделан дефолтный цикл событий. Начать писать асинхронные приложения на PHP стало еще чуть проще. Подробнее в анонсе.
    <?php
    
    require __DIR__ . '/vendor/autoload.php';
    
    $server = new React\Http\Server(function (Psr\Http\Message\ServerRequestInterface $request) {
        return new React\Http\Message\Response(
            200,
            [
                'Content-Type' => 'text/plain'
            ],
            "Hello World!\n"
        );
    });
    
    $socket = new React\Socket\Server('127.0.0.1:8080');
    $server->listen($socket);
    


Статьи


  • PHP совсем не так плох? — Короткие ответы на популярные мифы о PHP в 2021.
  • 12 советов по улучшению лайв кодинга
  • Организация вспомогательных функций — Используем реальные классы вместо свалки статических методов.
  • Статистика версий PHP: Июль, 2021 — Обновленная статистика по данным от композера. Теперь от Brent Roose вместо Jordi Boggiano.
  • Мои настройки PhpStorm — Также в тему пост: Мои настройки PhpStorm после 8 лет использования.
  • habr Валидация в приложении на PHP (часть 1 — валидация доменного слоя)
  • habr Написание парсера DBML на PHP
  • habr Отказоустойчивая работа с Redis
  • habr На php тоже может быть легко и быстро


community Сообщество


  • Мое невероятное путешествие с PHP — Matt Brown, автор статического анализатора Psalm, покидает Vimeo, где проработал 7 лет, и не будет заниматься PHP (судя по всему, переключился на Rust). Поддержка псалма перешла на плечи Bruce Weirdan and Orklah.
  • PHP fwdays'21 Online — Открыт прием заявок на доклады.




Подписывайтесь на Telegram-канал PHP Digest.

Если вам понравился дайджест, поставьте, пожалуйста, ему плюс.

Заметили ошибку или опечатку? Сообщите в личку хабра или телеграм.

Прислать ссылку можно через форму или просто написав мне в телеграм.
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 206

Источник: https://habr.com/ru/post/567228/


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

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

Обычно в конце месяца мы предлагаем вам дайджест самых интересных ИБ-инцидентов. Но в феврале нам встретилось столько совершенно потрясающих историй на вечную тему «вам з...
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него. Читать дальше →
Предлагаем вашему вниманию подборку с ссылками на новые материалы из области фронтенда и около него. Читать дальше →
Для «чтения на выходных» мы подобрали материалы о рекордах музыкальных чартов, триумфальном возвращении медиаплеера Winamp и о том, как изменились аудиоформаты за последние 100 лет. ...
Возможность интеграции с «1С» — это ключевое преимущество «1С-Битрикс» для всех, кто профессионально занимается продажами в интернете, особенно для масштабных интернет-магазинов.