PHP-Дайджест № 191 (19 октября – 2 ноября 2020)

m6cgakxhw7zztmic-i459_agh_s.jpeg

Фото: Валерий Горбачев (PHP Krasnodar)

Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8.0 RC 3 и видеообзоры новых возможностей, Composer 2, завершение разработки Faker (теперь в новой организации), два новых RFC для PHP 8.1, порция полезных инструментов, статьи, видео с прошедших митапов.

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


f574e9991c42407b8fa789a66b854f8d.png Новости и релизы


  • PHP 8.0 RC 3 — Предпоследний релиз-кандидат перед финальным выпуском. RC 4 ожидается 12 ноября и сам релиз уже 26 ноября.

    Свежие материалы по PHP 8:

  • В PhpStorm 2020.3 будут доступны кастомные атрибуты для PHP 8: #[ArrayShape], #[ExpectedValues], #[NoReturn], #[Pure], #[Deprecated], #[Immutable]. Причем #[ArrayShape] и #[Immutable] будут работать даже с более ранними версиями PHP.
  • PHP 7.4.12
  • PHP 7.3.24
  • Composer 2 — В этом мажорном релизе:
    • улучшена производительность благодаря параллельному скачиванию и установке пакетов и куче других оптимизаций;
    • более понятное описание ошибок при разрешении зависимостей;
    • в скрипт автозагрузки добавлен шаг проверки версии PHP и расширений (отключается добавлением "platform-check": false);
    • --dry-run флаг для require и remove — тестовый прогон команды, чтоб увидеть, что будет в итоге;
    • --unused флаг для remove поможет удалить ненужные зависимости из vendor, которых нет в composer.json (типа purge);
    • и много другого.

    Подробнее об изменениях можно почитать на php.watch или чуть короче в переводе на Хабре.

    Чтобы обновиться на новую версию, достаточно запустить: composer self-update --2.

  • Закат PHP Faker — В PR по поддержке PHP 8 в библиотеке fzaninotto/Faker поднялся спор о том, как развивать библиотеку. В ответ автор Francois Zaninotto объявил о том, что пакет можно считать завершенным и новых релизов не будет. Передавать репозиторий другой команде он не хотел, поэтому вскоре был создан форк fakerphp/Faker, который уже совместим с PHP 8 и не поддерживает PHP 5.

    Передавать права François Zaninotto не хотел, во-первых, потому что хочет оставить проект с 25k+ звезд на своем аккаунте. А во-вторых, потому что в прошлом был автором популярной ORM Propel. Контроль над ней он передал другому разработчику, который совершил единственную худшую стратегическую ошибку решив переписать все с нуля. Прошло 7 лет и стабильная версия Propel 2 до сих пор не вышла. Хотя это и не мешает использовать альфа-версии.

    Спасибо François за 9 лет работы над Faker.

  • PHP Russia 2020 → PHP Russia 2021 — Конференцию перенесли на 1 марта 2021 года.
  • phpcommunity.ru — PHP-сообщества в России, Беларуси, Украине.

    Ближайшие митапы: Калининград, 4 ноября; Краснодар, 7 ноября; Нижний Новгород, 14 ноября.


c9ee7880391644e4aef6cc28ca681ab0.png PHP Internals


  • [RFC] Short Functions — В этом RFC предлагается добавить синтаксис стрелочных функций для однострочных именованных функций и методов.
    class Person
    {
        public function __construct(
            private string $firstName,
        ) {}
        public function getFirstName(): string => $this->firstName;
    }"
    
  • [RFC] Explicit octal integer literal notation — В PHP шестнадцатеричные числа записываются с префиксом 0x, а двоичные с 0b. Восьмеричные же сейчас выбиваются из ряда и записываются с префиксом 0. Кроме неконсистентности, это может привести к проблемам при нестрогом сравнении с числовой строкой. Например, 016 в десятичном представлении равно 14 и в результате "016" == 016; // false.

    Предлагается для восьмеричных чисел разрешить нотацию с префиксом 0o, которая является стандартом и используется во многих других языках.

    0o16 === 14; // true
    016 === 0o16; // true
    "016" == 0o16; // false
    
  • Literal types PoC — Концепт литерального типа для PHP как в TypeScript.
    function foo(): "foo"|"bar" {
        return "foo";
    }
    

    Литеральный тип вряд ли будет реализован в PHP, но вот есть черновик RFC с предложением алгебраического типа данных, т. е. продвинутых перечислений.


cf862d9072784d04b621238ec137f2ca.png Инструменты


  • Infection PHP 0.20 — В свежем обновлении фреймворка для мутационного тестирования добавлено 8 новых мутаторов и возможность автоматически добавлять комментарии прямо в PR на GitHub.
  • JustSteveKing/php-sdk — Скелет для разработки PHP SDK для сервисов и API.
  • Hi-Folks/rando-php — Хелпер для генерирования псевдослучайных данных с различными фильтрами: $randomChars = Randomize::sequence()->chars()->count(10)->noDuplicates()->generate();
  • voku/PHPDoctor — Проверяет файлы и директории и находит места, где не хватает деклараций типов.
  • Psalm 4 — Обновление популярного статического анализатора.
  • phpDocumentor v3.0.0 — Мажорное обновление инструмента для генерирования документации на основе PHPDoc.


96b65e92179a40f2bd1884549973ddd5.png Symfony


314bd0f0dfc54e3fa7f0c0daef1a2d25.png Laravel


569de4298b764a33894aa517e74324f9.png Yii


329bec7c1e914963a1c5d2f2bfe99995.png Материалы для обучения


8dcc236774104f8286a40ceaea553820.png Аудио/Видео


  • audioSDCast #124 — В гостях Михаил Боднарчук, автор фреймворков для тестирования Codeception & CodeceptJS.
  • video Видеозаписи с прошедших митапов:


Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.

Больше новостей и комментариев в Telegram-канале PHP Digest.


Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 190

© Habrahabr.ru