Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.0 beta 4, о судьбе P++, видео, подкасты, анонсы митапов и конференций, порция полезных инструментов, и многое другое.
Приятного чтения!
Новости и релизы
- PHP 7.4.0 beta 4 — Последняя бета в цикле. Почему-то пропустили не было Beta 3? Следующим релизом станет RC 1, который ожидается 5 сентября.
- 21 сентября Badoo PHP Meetup #3: производительность
- CODEiD – PHP Odessa Conf #6 — 14 и 15 сентября, Одесса. Среди докладчиков Marco Pivetta, Sebastian Feldmann и другие. Для читателей PHP-Дайджеста промокод со скидкой 10%: PHPDIGEST_R.
PHP Internals
- Straw poll for P++ feasibility — Больше двух недель назад Зеев Сураски вынес на обсуждение провокационную идею создать новый язык на базе PHP под кодовым названием P++. В ответ было множество споров в Internals и не только, отличный обзор истории PHP и нюансов, а также пост о том, почему P++ плохая идея с нетехнической точки зрения.
Кто-то даже предложил сделать P-- – упрощённый PHP времён PHP 5.0, ну или P=== – просто оставить как есть.
К счастью, пока всё не зашло слишком далеко, Derick Rethans (автор Xdebug) запустил голосование с одним простым вопросом: Осуществима ли идея P++ в принципе? Всё сообщество PHP Internals единогласно проголосовало против, неожиданно включая самого Зеева. На этом идею можно P++ можно забыть. - [RFC] Deprecate short open tags, again — Множество контрибьюторов высказались против удаления коротких тегов из PHP в обозримой перспективе, и повторное голосование не преодолело необходимый порог. Итого короткие теги останутся ещё на 5+ лет.
- [PoC] throw_legacy_failure declare statement — Интересный PR в PHP с концептом переделки всех встроенных функций, с тем чтобы они бросали исключения вместо возращения
false
/null
. Данная возможность включается указанием директивыdeclare(throw_legacy_failure=1)
.
Инструменты
- drupol/collection — Легковесный пакет для работы с коллекциями, вдохновлённый illuminate/support и lazy.js.
- quasilyte/phpgrep — Инструмент для поиска по PHP-коду – как grep, только с «пониманием» синтаксиса PHP. Реализован на Golang и вдохновлён mvdan/gogrep. Аналог SSR в PhpStorm.
- voku/portable-utf8 — Библиотека для работы с UTF-8 строками без зависимостей от расширений типа mbstring или iconv.
- jasny/switch-route — PHP-разработчики никогда не писали роутеры /s и вот один реализован на основе switch-конструкций. Бенчмарки.
- franzose/gimme-url — Генератор ссылок для thephpleague/route. Прислал franzose.
- brick/varexporter — Альтернатива стандартной
var_export()
с возможностью экспорта замыканий и объектов без вывода__set_state()
. - ivopetkov/html5-dom-document-php — Улучшенный парсер HTML5. Расширяет и дополняет оригинальный DOMDocument.
Symfony
- symfony-bundles/kafka-bundle — Symfony Bundle для удобной работы с Kafka и быстрого создания консьюмеров. Прислал khaperets.
- Неделя Symfony #660 (19-25 августа 2019)
Laravel
- glhd/aire — Билдер форм для Laravel.
- inertiajs/inertia-laravel — Пакет позволяет писать SPA-приложения с React и Vue.js, используя при этом обычные контроллеры. Принцип работы.
- Laravel vs Lumen — Что использовать?
- Ошибки панели администрирования или опыт разработки Laravel Orchid
- Кеширование в Laravel: основы плюс tips&tricks
- Видеозаписи всех докладов Laracon US 2019
Yii
Async PHP
- Пишем RESTful API с помощью ReactPHP: Улучшаем HTTP-ответы
- apisearch-io/symfony-async-kernel — Асинхронное ядро для Symfony на базе промисов ReactPHP. Демо-приложение: apisearch-io/symfony-react-demo.
Материалы для обучения
- От LAMP к serverless: опыт переноса externals.io.
- Быстрый обзор Slim 4
- Разбор SQLi и PHP Object Injection уязвимостей в SuiteCRM
- Перестаньте использовать DateTime
- Альтернативный подход к подписке на события, или а так ли нужен EventObject
Аудио/Видео
- Профилируем PHP-приложения с помощью Blackfire.io
- PHP Panda Meetup в Skyeng
- PHP Internals News #23 — С George Banyard ещё раз о коротких тэгах.
- PHP Internals News #24 — Со Станисловам Малышевым о применении фаззинга для тестирования PHP.
- SDCast и Пятиминутка PHP: Интервью с разработчиками PhpStorm.
- Пятиминутка PHP: DDD #2 — Документация и коммуникация
- Пятиминутка PHP: DDD #3 — Layered Architecture — Третий выпуск Пятиминутки DDD про изоляцию предметной области и многоуровневую архитектуру.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 162
Комментарии (12)
BoShurik
26.08.2019 11:56Вот еще интересная issue в Symfony/php 7.4
https://github.com/symfony/symfony/issues/32995
В новое версии php стал бросать Fatal error, если не найден родительский класс/интерфейс
https://3v4l.org/uh8aearkamax
26.08.2019 18:57Я так понимаю, что в случае 7.4 исключения, брошенные автозагрузчиком, конвертируются в Fatal Error, т.е. catch(\Exception $e) это не отловит. Но так поступает не только 7.4, но еще и (внезапно) 7.2.20, НО не 7.2.19 и не 7.3.х — т.е. это ломает обратную совместимость в минорном релизе 7.2.20.
Скринevgwed
27.08.2019 17:26Из-за этой ошибки пришлось переписывать свой Dockerfile с жестким указанием PHP 7.2.19, а не 7.2. При этом начало стрелять внезапно и сразу не понятно почему.
arkamax
27.08.2019 17:55Может потому, что Docker кэширует образы, и у вас какое-то время висел старый образ? Потом в определенный момент (к примеру после изменения Dockerfile) он тянет новый образ, там оказывается 7.2.20, и приехали. Мы этот цирк имеем сравнительно регулярно.
snake302
26.08.2019 16:09Про Laravel 6 не написали, уже превью появилось
evgwed
27.08.2019 17:173 сентября уже выходит в свет! Плюс она будет LTS, на текущий момент LTS считается версия 5.5.
Release Notes Laravel 6.0
P.S. Кому интересно, вот хороший release note на русском от Dmitry Afanasyev (ссылка)
P.P.S. Еще недавно laravel.com поменял свой дизайн.
Кому лень переходить и смотреть, вот фоткаford153focus
27.08.2019 00:03P++ как отдельный язык — явно лишнее, но всё же надеюсь, что PHP будет идти в сторону строгой статической типизации с опциональной динамикой и в сторону AOT-компиляции
yehors
По-моему, throw_legacy_failure declare statement это must have для будущих версий.