Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 8 Beta 4, инициатива по консолидации PHP-сообщества, концепт PHP для GraalVM, предложение по дженерикам в Internals, полезные инструменты, видео, подкасты, статьи.
Приятного чтения!
Новости и релизы
- PHP 8.0.0 Beta 4 — Дополнительный незапланированный выпуск беты. Добавлен для стабилизации JIT и именованных аргументов в ядре, а также переделывания ворнингов и нотисов.
Переносить дату финального релиза (26 ноября) пока не планируется. Следующий релиз-кандидат ожидается 1 октября. - PHP: Community Synergy Initiative — С проектом PHP есть ряд проблем. Несколько заметных примеров: непонятная и устаревшая секция комментариев в документации на php.net, отсутствие синергии между сообществом и мейнтейнерами языка, недостаточно прозрачности в том, что происходит в проекте кроме новых фич через RFC и нехватка новых людей в проекте.
Paul Dragoonis и Christoph Rumpel хотят сдвинуть дело с мертвой точки и для начала создали анонимный опрос The PHP Community Survey 2020.
- Концепт реализации PHP для GraalVM — В рамках проекта GraalVM развивается альтернативная виртуальная машина для Java с поддержкой других языков. В экспериментальной реализации PHP пока сделано лишь небольшое подмножество возможностей PHP.
На синтетическом бенчмарке Computer Language Benchmarks Game показывает более чем 80-кратное увеличение производительности по сравнению с PHP 7.4.
- Поддержка MySQL 5.6 заканчивается в феврале 2021 — Если вы думали, что с обновлением PHP плохо обстоят дела, то вот статистика использования MySQL в WordPress: 65% установок используют MySQL ≤5.6.
- Composer 2.0 RC1
PHP Internals
- Удаляемые дженерики (eliding generics) — Brent Roose, известный своими постами о Laravel и PHP, выдвинул на обсуждение идею добавить в PHP дженерики, но без проверок в рантайме.
Например, возьмем такой код:
class Collection<T> { public function add(T $item) { ... } } $c = new Collection<Product>().
Статические анализаторы и IDE смогут его распарсить и провести анализ. В то время как интерпретатор дженерики проигнорирует и будет выполнять код как:
class Collection { public function add(mixed $item) { ... } } $c = new Collection().
Идея не новая. Точно так же по умолчанию работают дженерики и в Hack. А в Python, например, почти вся информация о типах в большинстве случаев удаляется и ни один популярный интерпретатор не валидирует типы аргументов.
- Observer API — В PHP 8 будет добавлен внутренний API для отслеживания входа и выхода из функции. Это полезно для расширений типа Xdebug, профайлеров и APM-решений New Relic, Tideways, и т. п.
Подробнее об API в подкасте PHP Internals News #68 с авторами Levi Morrison и Sammy K Powers.
Инструменты
- phpbench/phpbench 1.0.0-alpha1 — Очень удобный инструмент для бенчмаркания своего кода. В новой версии можно сравнивать результаты с предыдущими запусками и соответственно использовать на CI для контроля производительности. Подробнее в посте.
- seanmorris/php-wasm — Активно развивающийся форк PIB: PHP in Browser — PHP, скомпилированный в WebAssembly с помощью Emscripten. Позволяет запускать PHP в современных браузерах. Демо: Drupal в браузере.
- imliam/php-unique-gmail-address — Пакет для нормализации Gmail адресов (убирает точки, добавления через + и прочее).
- jawira/emoji-catalog — 3k+ смайликов emoji в константах.
Symfony
Laravel
- Релиз Laravel 8 — Подробный видеообзор на Laracasts,
- Обзор системы аутентификации в Laravel — Актуально с путаницей вокруг laravel/fortify.
- laravel/jetstream — В рамках релиза Laravel 8 представлен скелет приложения на базе Livewire/Inertia.js.
- Как переключить драйвер очереди в Laravel на лету.
- Laravel Business — Канал на YouTube с видео про фреймворк.
- Распространенные ошибки безопасности в приложениях Laravel.
- Laravel–Дайджест (14–20 сентября 2020)
Yii
- Yii 2.0.38 — Добавлена поддержка PHP 8.
- Новости Yii 2020, выпуск 6
Async PHP
- Создаем PSR-15 адаптер для react/http с использованием krakjoe/parallel. При это сами middleware, которые передаются в адаптер, могут быть блокирующими, так как выполняются в отдельных воркерах параллельно.
- Используем ReactPHP для работы с HTTP API.
PhpStorm
- Как ускорить разработку с помощью лайв темплейтов (сниппеты кода) в PhpStorm.
- Code With Me — Ранняя версия (EAP) плагина для совместного программирования в PhpStorm и других IDE от JetBrains. Чтоб попробовать, нужно заполнить короткую анкету surveys.jetbrains.com/s3/code-with-me.
Материалы для обучения
- Простой рецепт отвязывания логики приложения от фреймворка.
- О влиянии исключений на производительность — Спойлер: блоки try/catch влияют незначительно, а бросание исключений требует сбора стека и создания объекта и как следствие может быть дорогостоящим. Но в реальных приложениях это никогда не будет узким местом.
- Пошаговая инструкция о том, как контрибьютить в опенсорсные пакеты PHP.
- 4 совета по рефакторингу в PHP.
- Современная безопасность PHP: Часть 1 — типичные проблемы, Часть 2 — рекомендации по защите.
- Диалекты в коде: часть 2.
- HTTP-клиент на стероидах.
- Среда разработки PHP на базе Docker.
- Ускоряем кеш проекта в NoVerify (линтер для PHP) в 10 раз.
- Улучшения покрытия PHP кода в 2020 году.
Аудио/Видео
- Никита Попов и Nikolas Grekas обсуждают совместимость Symfony с PHP 8
- Использование Xdebug для отслеживания функций и логирования каждого вызова со всеми аргументами и возвращаемыми значениями. И еще одно видео о том как использовать профайлер Xdebug.
- Никита Попов и я в подкасте «Подлодка» рассказываем про PHP.
Занимательное
- Неофициальное лого PHP 8
- White ConFoo elePHPant — Предзаказ на слоников джокеров с логотипом PHP 8. Минимальный заказ 6 штук.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 187
Автор: Роман Пронский