PHP-Дайджест № 191 (19 октября – 2 ноября 2020)
Фото: Валерий Горбачев (PHP Krasnodar)
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8.0 RC 3 и видеообзоры новых возможностей, Composer 2, завершение разработки Faker (теперь в новой организации), два новых RFC для PHP 8.1, порция полезных инструментов, статьи, видео с прошедших митапов.
Приятного чтения!
Новости и релизы
- 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 ноября.
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 с предложением алгебраического типа данных, т. е. продвинутых перечислений.
Инструменты
- 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.
Symfony
Laravel
Yii
Материалы для обучения
Аудио/Видео
- SDCast #124 — В гостях Михаил Боднарчук, автор фреймворков для тестирования Codeception & CodeceptJS.
- Видеозаписи с прошедших митапов:
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 190