Фото: Илья Шихалеев.
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8.0 RC 2, Xdebug 3 beta, PhpStorm EAP с поддержкой PHPStan и Psalm, порция полезных инструментов, статьи, видео, митапы.
Приятного чтения!
Новости и релизы
- PHP 8.0.0 RС 2 — Следующий релиз-кандидат ожидается 29 октября. Для 8.0 создана ветка, а master репозитория теперь используется для PHP 8.1.
Обзоры новых фич в PHP 8 можно посмотреть в постах Что нового в PHP 8 и PHP 8: до и после, также в блоге PhpStorm об использовании в IDE, обзоры Ларри Гарфильда и на PHP.Watch.
Попробовать PHP 8 можно из докера
php:rc-cli
, на маке через shivammathur/homebrew-php, собрать из исходников с помощью github.com/php-build/php-build. - Xdebug 3.0 beta 1 — В третьей версии переработана конфигурация, чтоб начать работу с отладчиком было легче: достаточно одной опции
xdebug.mode=debug
. Порт по умолчанию, изменен с 9000 на 9003 — наконец-то не будет конфликтов с php-fpm, который тоже использует 9000. Подробнее в руководстве по обновлению. - Composer 2.0.0 RC2 — Последний релиз-кандидат перед финальной версией. Чтобы попробовать сейчас:
composer self-update --preview
. - PhpStorm 2020.3 EAP — Во втором билде раннего доступа доступна поддержка PHPStan и Psalm: запуск инспекций, автодополнение тегов, поддержка типов, и даже первый тривиальный кейс для дженериков через
@template
.Кстати, в прошедшем недавно AMA на Reddit с командой PhpStorm Никита дал подробный ответ о состоянии дел и перспективах дженериков в PHP. Если коротко, то стираемые дженерики являются наиболее жизнеспособным подходом с чисто технической точки зрения, но в тоже время он очень не консистентен и оставляет дыру в типобезопасности.
- 29 ноября в Москве конференция PHP Russia будет офлайн.
- phpcommunity.ru — PHP-сообщества в России, Беларуси, Украине.
Месяц PHP-митапов: каждую субботу с 17 октября по 14 ноября.
Инструменты
- PHP-DI — Независимый от фреймворка DI-контейнер.
- markrogoyski/math-php — Мощная современная математическая библиотека для PHP.
- Danack/FloatHex — Функции для преобразования числа с плавающей точкой в шестнадцатеричную строку и обратно, а также для отображения двух чисел с плавающей точкой в виде двоичного представления. Или еще раз почему
0.1 + 0.2 === 0.3 -> false
Скрытый текстecho float_compare(0.3, 0.1 + 0.2); >> ┌──────┬─────────────┬──────────────────────────────────────────────────────┐ │ Sign │ Exponent │ Mantissa │ │ 0 │ 01111111101 │ 0011001100110011001100110011001100110011001100110011 │ │ 0 │ 01111111101 │ 0011001100110011001100110011001100110011001100110100 │ │ - │ ----------- │ -------------------------------------------------xxx │ └──────┴─────────────┴──────────────────────────────────────────────────────┘
- marcocesarato/PHP-Antimalware-Scanner — Сканер для поиска вредоносного кода в PHP-файлах.
- Prometheus PHP — Клиент для prometheus.io на PHP.
- shivammathur/setup-php — GitHub action для установки PHP, расширений, и прочего для последующего использования в своих пайплайнах. Небольшой обзор в блоге GitHub.
Symfony
- Неделя Symfony #720 (12-18 октября 2020)
- Новые члены core-команды Symfony.
- Что нового будет в Symfony 5.2 Среди прочего, в Symfony 5.2 можно использовать атрибуты PHP 8. Добавлена поддержка атрибутов для аргументов контроллера и пример в виде
#[CurrentUser]
для получения текущего пользователя:public function index(#[CurrentUser] MyUser $user) { /* ... */ }
Laravel
- ksassnowski/venture — Инструмент позволяет строить сложные цепочки задач на основе системы очередей Laravel.
- spatie/spatie.be — Spatie открыли код своего сайта spatie.be. И также прилагается серия туториалов с разбором всех тонкостей реализации.
- Стрим: Генерируем динамические картинки open graph с заголовками постов.
- Полное руководство по каркасам аутентификации в Laravel.
- Laravel–Дайджест (12–18 октября 2020)
- Laravel Jetstream. Зачем?
- Тейлор отвечает на вопросы про Jetstream.
Async PHP
- clue/reactphp-mq — Легковесная очередь сообщений в памяти на базе ReactPHP.
Материалы для обучения
- Transpiling PHP code from 8.0 to 7.x via Rector — Если обновиться на новую версию PHP нет возможности, но новые фичи при разработке использовать хочется, то можно добавить этап «компиляции» в проект и даунгрейдить с помощью rector/rectorphp.
- Инструкция о том, как писать тесты для самого PHP — Для этого не надо знать C, потому что тесты пишутся на PHP.
- Как обрабатывать большое число веб-хуков — использовать очередь и отложенную обработку.
- Настраиваем PhpStorm для использования с PHPUnit и Xdebug через Docker.
- Именованные параметры PHP 8.0 и вариативные функции — О разных способах вызова функций с произвольным числом аргументов и использовании spread оператора (
...
) в PHP 8. - Кеширование делает все быстрее? — Пост от автора PHPUnit о том, почему добавление кеширования для покрытия кода в PHPUnit не дало желаемого эффекта и как в итоге решили эту проблему.
- Анализ PHP-скрипта распространяющего малварь Emotet.
- Как я за вечер написал быструю CMS для статических сайтов по правилам бизнес-логики в одном файлике.
- Я сомневался в юнит-тестах, но… — Расшифровка подкаста “Между скобок” с Владимиром Янцем.
- Ловим баги на клиенте: как мы написали свою систему для сбора клиентских ошибок.
- Типобезопасная работа с массивами PHP, часть 2.
Аудио/Видео
- ХудоБедно с Сергеем Жуком, Антоном Моревым и Александром Макаровым про онбординг и все, что с ним связано.
- Deploy Friday #27 — Language Spotlight: PHP — Подкаст с участием релиз-менеджеров PHP 8 Sara Golemon и Gabriel Caruso, a также Larry Garfield. Про современный PHP.
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 189
Автор: Роман Пронский