Свежая подборка со ссылками на новости и материалы. В выпуске: О будущем PHP: P++ или PHP2020, принят PSR-12, PHP 7.4 beta 2, Slim 4, и другие релизы, порция полезных инструментов, и многое другое.
Приятного чтения!
Новости и релизы
- PSR-12 Extended Coding Style Guide — Принят расширенный стандарт стиля кодирования. Изменения по сравнению с PSR-2.
- PHP 7.4.0 beta 2 — Последняя бета ожидается 22 августа. Полный список изменений ветки 7.4 смотрите в документе UPGRADING. Для разработчиков расширений также доступен список изменений во внутреннем API.
- PHP 7.3.8, 7.2.21, 7.1.31
- Slim 4.0.0
- Composer 1.9.0
- Завершающий летний сезон митап PHPofBy #29 — 24 августа, Минск.
PHP Internals
- P++ — Споры и обвинения в PHP Internals по мотивам удаления коротких тэгов
<?
, явной передаче параметров по ссылке и других обсуждений в конце концов вылились неожиданное предложение от Зеева Сураски – сделать новый диалект PHP. Рабочее название P++ тут неспроста – Зеев предлагает сделать «сестринский» язык, как C++ для C. При этом предполагается, что и PHP и P++ будут развиваться одновременно в рамках одного рантайма.В новом P++ можно будет реализовать массу революционных улучшений, очистить от легаси, и навести порядок не думая об обратной совместимости. Также поскольку язык будет иметь новое название, то и от шлейфа плохой репутации можно будет отделаться. A классический PHP при этом будет получать все плюшки типа JIT, предзагрузки, и т. п., но сохранять обратную совместимость.
Предложение ожидаемо встретило массу контраргументов и Зеев даже попытался ответить на них создав P++ idea: FAQ. Тем не менее, вопросов множество: ограниченные ресурсы (всего ~2 человека фултайм работащих над PHP), фрагментация сообщества, опыт Hack, как реально будет сосуществовать и взаимодействовать код PHP и P++, и масса других.
- [RFC] Namespace-scoped declares, again — В рамках RFC Никита Попов предлагает более эволюционный подход по дальнейшему развитию языка. А именно, использование опциональных директив по типу
strict_types
.
Причём тут есть два возможных пути реализации: мелкозернистый – по директиве на каждую фичу; и крупнозернистый – когда целая пачка фич объединяется в одну директиву обозначающую редакцию или стандарт языка, например «PHP2020». По аналогии с Editions из Rust. - Call for participation: Annotating internal function argument and return types — Хотите стать контрибьютором ядра PHP? Более подходящего момента для старта не придумаешь!
Недостаточная информация о внутренних функциях в Reflection – довольно старая проблема. К счастью, в PHP 8 уже всё готово для того, чтобы сделать поддержку типов для аргументов и возвращаемых значений встроенных функций. Собственно, осталось только добавить соответствующие аннотации и для этого нет необходимости быть экспертом в С. Никита сделал PR с примером, чтоб показать процесс: https://github.com/php/php-src/pull/4499 Ну а дальше – помощь приветствуется!
Инструменты
- nunomaduro/pest — Синтаксический сахар для PHPUnit, чтобы писать тесты в стиле facebook/jest.
- php-vcr/phpunit-testlistener-vcr — Записывает HTTP-ответы в ваших тестах и затем «проигрывает» их во время последующих запусков тестов, тем самым ускоряя запуски и детерминируя результат. Пример использования.
- mpratt/Embera — Библиотека для удобного получения метаинформации о страницах по URL (oembed, opengraph, twitter-cards, изображения, код для встривания и прочее).
- NxtLvLSoftware/php-static-constructors — Статические конструкторы а-ля C# – исполняются максимум один раз. Реализованы через специальный автозагрузчик.
- DaveLiddament/sarb — Реализовывает Baseline для инструментов статического анализа, позволяя внедрять использование в легаси-приложениях.
Symfony
- Минорные не-LTS релизы Symfony будут поддерживаться в течение 8 месяцев вместо 14.
- Неделя Symfony #658 (5-11 August 2019)
- Domain Events d Symfony-приложении
- Deploy Symfony + React приложения на AWS посредством CI
Laravel
- ylsideas/feature-flags — Реализация флагов фич для Laravel.
- gjrdiesel/laravel-cloud — Код SaaS-проекта, который разрабатывал Тейлор до Vapor. Подробнее в подкасте Пятиминутка PHP № 58.
- История одного бага в Laravel Shift
- Сервис-локатор – антипаттерн
- Пачка советов по работе с Laravel (Laracon 2019)
- Сервис-контейнер: 4 способа управления зависимостями
- Порождение событий, CQRS и Laravel
- Docker + Laravel + RoadRunner = <3
Yii
Async PHP
- Пишем RESTful API с помощью ReactPHP: Валидация запроса, Управление продуктами
- phpinnacle/buffer — Библиотека для парсинга потоковых буферов.
Материалы для обучения
- Как мы добавили тысячи аннотаций @var за день
- Тернарный оператор в PHP
- Три года автотестов: как повысить скорость и не только
- Разработка гибридных PHP/Go приложений с использованием RoadRunner
- Мутационное тестирование в PHP: качественное измерение для code coverage
- Предварительная загрузка в PHP 7.4
- Получаем доступ к приватным свойствам без Reflection – интересная вариация старого трюка:
Аудио/Видео
- PHP Internals News #22 — C Matteo Beccati об [RFC] «Escape PDO »?" parameter placeholder".
- That Podcast Episode 63 — C Benjamin Eberlei о компании и профайлере Tideways.
- Пятиминутка PHP № 59: DDD #1 — Domain Model — — Первый выпуск из серии кратких заметок о DDD по книге Эванса.
- Пятиминутка PHP № 60: Тестирование в Vimbox (SkyEng) — О важности автотестов и планах по развитию культуры тестирования в команде. Перевёрнутая пирамида тестирования. TDD или нет? Тесты сначала или тесты потом? Зачем нужны тесты и как в этом убедить коллег?
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 161
Автор: Роман Пронский