Свежая подборка со ссылками на новости и материалы. В выпуске: Последний релиз-кандидат PHP 8.0 перед финальным релизом и свежие материалы по PHP 8, RFC и обсуждения из PHP Internals, порция полезных инструментов, стримы, подкасты, статьи.
Приятного чтения!
Новости и релизы
- PHP 8.0 RC 4 — Последний релиз-кандидат перед финальным выпуском PHP 8, который намечен на 26 ноября.
Свежие материалы по PHP 8:
- Обновление серии постов от Larry Garfield: про атрибуты и объявление свойств в конструкторе.
- Видеокурс по основным фичам PHP 8 от Spatie.
- В PHP 8 оператор `@` не будет подавлять фатальные ошибки, а именно ошибки типов:
E_ERROR
,E_CORE_ERROR
,E_COMPILE_ERROR
,E_USER_ERROR
,E_RECOVERABLE_ERROR
,E_PARSE
. - О WeakMap в PHP 8 с примерами реального применения.
- Как сконфигурировать JIT в PHP 8.
Кроме того, в PHP 8 по умолчанию удален PECL. Из-за этого могут поломаться Dockerfile, в которых с его помощью устанавливались расширения. Вместо PECL можно использовать FriendsOfPHP/pickle.Скрытый текстRUN curl -L -o /tmp/pickle.phar https://github.com/FriendsOfPHP/pickle/releases/latest/download/pickle.phar; mv /tmp/pickle.phar /usr/local/bin/pickle; chmod +x /usr/local/bin/pickle; pickle install xdebug; RUN echo "extension=xdebug.so" >> $PHP_INI_DIR/conf.d/php.ini;
Или так:RUN mkdir -p /usr/src/php/ext/xdebug && curl -fsSL https://pecl.php.net/get/xdebug | tar xvz -C "/usr/src/php/ext/xdebug" --strip 1 && docker-php-ext-install xdebug
- phpcommunity.ru — PHP-сообщества в России, Беларуси, Украине.
- Полезные привычки программиста после 30, MySQL vs Postgres и как поговорить об этом в субботу.
- Как обстоят дела с PHP в Краснодаре (и не только).
Ближайшие митапы: PHP-митап Иннополис онлайн, 19 ноября; Online-митап по PHP от SimbirSoft, 20 ноября.
PHP Internals
- [Draft] Closure self reference — Ранний черновик на обсуждении. Предлагается в замыканиях добавить псевдопеременную
$lambda
, которая указывает на само замыкание. По аналогии с$this
для классов.$fibonacci = function (int $n) use (&$fibonacci) { if ($n === 0) return 0; if ($n === 1) return 1; return $fibonacci($n-1) + $fibonacci($n-2); }; // => $fibonacci = function (int $n) { if ($n === 0) return 0; if ($n === 1) return 1; return $lambda($n-1) + $lambda($n-2); };
- [PR] Support for <func>::function syntax — Концепт синтаксиса
::function
(или::fn
) для получения полного неймспейса и имени функции по аналогии с::class
. Подобное предложение обсуждалось раньше и имеет проблемы, но вполне вероятно будет принято. - [Discussion] Alias for `int|float` — Обсуждалась возможность ввести псевдоним
number
илиnumeric
для объединенного типаint | float
. В комментариях указали, что уж лучше позже сделать полноценные алиасы для типов как в TypeScript:type Number = Foo|Bar;
.
Инструменты
- mnavarrocarter/php-fetch — Порт fetch WebApi на PHP без сторонних зависимостей. Лаконичный HTTP-клиент в одной функции: Скрытый текст
use function MNC\Http\fetch; $response = fetch('https://habr.com'); echo $response->status()->code(); // 200 echo buffer($response->body()); // or while (($chunk = $response->body()->read()) !== null) { echo $chunk; }
- themsaid/ibis — Поможет сгенерировать полноценную электронную книгу в PDF из markdown-файлов.
- i582/phpstats — Инструмент для сбора метрик кода и графов зависимостей для PHP. Реализован на базе VKCOM/noverify, то есть на Go.
- mihaeu/dephpend — Инструмент статического анализа, который поможет выявить проблемы в архитектуре путем анализа зависимостей классов.
- httpsoft/http-message — Строгая и быстрая реализация стандартов #PSR-7 и #PSR-17.
- spatie/crypto — Небольшая обертка над openssl для шифрования данных с помощью приватного/публичного ключа. Вводный пост.
- icanhazstring/systemctl-php — PHP-обертка над systemctl.
Symfony
- Symfony Panther: PHP-библиотека для тестирования из браузера и парсинга веб-страниц.
- Что нового будет в Symfony 5.2 .
- Несколько видеотуториалов по Symfony.
- Неделя Symfony #723 (9-15 ноября 2020)
Laravel
- laravel/breeze — Новый пакет от Тейлора. По сути, одна консольная команда для быстрого разворачивания приложения на Laravel + Tailwind CSS + контроллеры для аутентификации. Видеообзор пакета.
- spatie/laravel-settings — Позволяет работать с конфигом приложения в типизированном стиле. Вводный пост.
- ksassnowski/venture — Инструмент позволяет строить сложные цепочки задач на основе системы очередей Laravel.
- Laravel Podcast S4:E17 — C Christoph Rumpel про сервис-контейнер Laravel.
- Стрим об обновлении пакета spatie/laravel-event-sourcing на PHP 8.
- Обзор плагина Laravel Idea для PhpStorm.
- Laravel–Дайджест (2–8 ноября 2020)
Yii
- Новости Yii 2020, выпуск 7 — Релизы Yii 2, прогресс по Yii 3, важные вести о Yii 1 и другие новости.
Async PHP
- clue/reactphp-term — Потоковый эмулятор терминала.
- clue/reactphp-utf8 — Потоковый парсер UTF-8.
PhpStorm
- PhpStorm 2020.3 EAP #6 — В раннем доступе поддержка Tailwind CSS и Xdebug 3.
- Подборка трюков и советов по PhpStorm в твитах.
- IntelliJ плагин для Alpine.js — Добавляет автокомплит директив.
- Elephpant Progress Bar — Заменяет прогресс бары на слоника.
Разное
- ВКонтакте снова выкладывает VKCOM/kphp — Ребята из ВКонтакте заопенсорсили свой компилятор PHP. Коротко было в канале, а подробнее в анонсе на Хабре.
- Как разрабатывать на PHP 7.4 и деплоить на PHP 7.1 с помощью rectorphp/rector GitHub Actions. Когда хочется использовать новые фичи языка, но обновить целевую систему нет возможности.
- О поддержке атрибутов PHP 8 в Psalm.
- php-fig-rectified/fig-rectified-standards — Попытка создать альтернативные стандарты. В частности, сделан PSR-2-R с табами вместо пробелов и скобками для классов и методов на одной строке с декларацией.
Аудио/Видео
- PHP Internals News — подкаст, в котором Derick Rethans (Xdebug) берет интервью у авторов RFC.
- Episode 69: Short Functions — C Larry Garfield про однострочные именованные функции / методы.
- Episode 70: Explicit Octal Literal — C George Peter Banyard про запись восьмеричных чисел в PHP.
- ОНТИКО подкаст — В первом выпуске в гостях Александр Макаров.
- PHPBenelux Virtual Meetup: Damien Seguy — Modernize your PHP with Exakat, Wim Godden — Why and How of moving to PHP 8.
- О создании дев-окружения для PHP с помощью Docker Compose.
- Митап «Фреймворки и инструменты PHP»: Александр Макаров – Yii: уроки прошлого и будущее, Антон Титов – Cycle ORM и графы, Дмитрий Елисеев — Выбор фреймворка для ентерпрайза.
Занимательное
- vincentpontier.com/elephpant/ — Официальный магазин слоников снова доступен! Можно заказать розового и синего.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку хабра или телеграм.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 191
VolCh
Вот зачем такое делают? Для привычности при переключении между языками? Или подготовка к компиляции PHP в wasm? )
pronskiy Автор
А там автор в ридми как раз отвечает на этот вопрос https://github.com/mnavarrocarter/php-fetch#why-another-http-client
По крайней мере, в этом больше смысла, чем в том, чтобы делать еще один PSR-18-совместимый клиент.
VolCh
Спасибо, недоскроллил :(
Fantyk
Также странно видеть HTTP клиент без настройки timeout соединения. У автора какой-то свой опыт работы с сетью. Я бы смотрел на этот пакет лишь с целью ознакомиться.
pronskiy Автор
Интересно было бы провести исследование о том, как часто используется опция таймаута. Мое предположение, что в 83% случаев используется дефолтное значение
VolCh
Давеча столкнулся, что в каком-то клиенте дефолтное было без таймаута...