Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.0 beta 1, PhpStorm 2019.2, PSR-12, обзор RFC предложений из PHP Internals, новости с Laracon US, подкасты, порция полезных инструментов, и многое другое.
Приятного чтения!
Новости и релизы
- PHP 7.4.0 beta 1 — С первым бета-релизом заканчивается фаза активной разработки, а значит список новых возможностей и изменений в ветке 7.4 можно считать финальным. (За исключением short tags). Следующая бета ожидается 8 августа.
- PhpStorm 2019.2 — Типизированные свойства PHP 7.4, поиск дубликатов, подсветка и проверка регулярных выражений, EditorConfig, Shell-скрипты и многое другое.
- Стартовало голосование по PSR-12, расширенному стандарту стиля кодирования, который должен прийти на смену PSR-2.
- PHP Meetup в Москве (офис SkyEng), 22 августа 2019 — Анонс митапа, плавно переходящего в BeerPHP дринкап (в Москве и онлайне)
- Let's play a little game with Lamoda — 16 августа в московском офисе Lamoda пройдёт PHP Quest. Чтобы поучаствовать, необходимо до 5 августа заполнить анкету и решить головоломку.
- PHP fwdays’20 – Сall for papers — Стартовал приём заявок на доклады на конференцию PHP fwdays’20, которая пройдёт 30 мая 2020 в Киеве.
PHP Internals
- [RFC] Deprecations for PHP 7.4 — Все пункты из предложения преодолели порог на голосовании и будут объявлены устаревшими в PHP 7.4.
- [RFC] Escape PDO "?" parameter placeholder — Предложение экранировать символ? в PDO принято и смержено в PHP 7.4.
- [RFC] Explicit call-site pass-by-reference — Старое предложение от Никиты снова на обсуждении. На данный момент тот факт, что функция принимает аргумент по ссылке обозначается только в определении самой функции:
Предлагается сделать возможным явное указание передачи по ссылке. Тем самым предупреждая разработчика о том, что переданная переменная изменится:function byRef(&$ref) {...} byRef($var);
function byRef(&$ref) {...} byRef(&$var);
- [RFC] Namespace-scoped declares — Ещё один старый RFC поднят на обсуждение. Изначально предлагалось сделать возможным установку директив интерпретатора для целых пространств имён, вместо обявления
declare();
в каждом файле. Это может быть удобно, особенно если будут приняты strict_operators.Скрытый текстТеперь обсуждается возможность объявления для папок вместо пространств имён – это решает проблемы реализации.namespace_declare('Vendor\Lib', [ 'strict_types' => 1, 'strict_operators' => 1, ... ]);
- [RFC] Deprecate PHP Short open tags v2 — В оригинальном предложении рассматривалась идея убрать возможность использования коротких тегов
<?
. Однако уже после того, как оно было принято, посыпались возмущения и споры. Данный RFC предлагает более мягкий путь: если в php.ini включёна опцияshort_open_tag
, то при первом использовании<?
будет брошен Notice. Несмотря на то что PHP 7.4 уже в бете, в случае принятия, реализация будет вмержена с разрешения релиз-менеджеров.
Инструменты
- krakjoe/tombs — Расширение для поиска «мёртвого» кода. Подключаете на продакшене не опасаясь проблем с производительностью, ждёте день/неделю/месяц, затем смотрите статистику и видите, какие функции/методы ни разу не выполнялись. Подробнее в посте автора.
- krakjoe/stat — Ещё один крутой концепт от Joe Watkins. Расширение для профайлинга PHP-приложений на продакшене. Отдаёт информацию в параллельном потоке выполнения без накладных расходов по производительности. Подробнее в посте.
- jeremeamia/iter8 — Итерация и трансформация массивов с помощью генераторов. Альтернатива классике от Никиты Попова: Nikic/Iter.
- cpliakas/git-wrapper — PHP-оболочка для работы с Git.
- exussum12/coverageChecker — Инструмент позволяет инкрементально внедрять хорошие практики. По сути, baseline для других инструментов. Например, можно требовать 90% покрытия тестами, но не для всего кода, а для того, который был добавлен в коммите.
Symfony
- SymfonyCloud — Сервис для развёртывания Symfony-приложений вышел из беты и теперь доступен всем желающим. Позволяет описать инфраструктуру в yaml конфигах и разворачивать, обновлять, делать снэпшоты и т.п. одной командой. Пример использования для redirection.io.
- Установка и настройка Sonata Admin на Symfony 4
- Неделя Symfony #656 (22-28 июля 2019)
Laravel
- Выступление Тейлора на Laracon US:
• Laravel 6 выйдет в августе
• Фреймворк перейдёт на Semver (компоненты уже)
• Новый брендинг
• Представлен Laravel Vapor — Платный сервис для развёртывания Laravel-приложений в инфраструктуре AWS: Lambda, RDS, CloudFront, S3, CloudWatch. Работает на кастомном рантайме (не SAM или Serverless.com). Описываете yaml, деплоите с помощью консольной утилиты, настраиваете и мониторите в веб-интерфейсе или CLI.
• Конспект доклада
- Что такое AWS Lambda и как Laravel Vapor его использует.
- calebporzio/livewire — Фронтенд фреймворк для Laravel, который позволяет делать биндинги из Blade к PHP-классам и не писать дополнительного JS-кода. (Как работает под капотом не понял. Похоже, используется turbolinks. Поправьте, пожалуйста, кто смотрел).
- orchestral/testbench — Пакет для упрощения тестирования при разработке собственных пакетов для Laravel.
- Рекомендации о том, как ускорить написание тестов для Laravel-приложений.
- Laravel Event Projector и концепция порождения событий.
Yii
- Yii достиг первой цели по сбору средств на Open Collective — Один core-разработчик сможет сфокусироваться на фреймворке фултайм.
- Yii 2.0.23 и разработка Yii 3
Async PHP
- Пишем RESTful API с помощью ReactPHP: Добавляем базу данных, Парсим тело запроса.
- Как делать микросервисы на PHP с помощью swoft. И ещё немного про Swoft.
Serverless
- Запускаем Laravel Artisan на AWS Lambda c помощью bref.
- Ещё один пример решения задачи с использованием AWS Lambda и bref.
- Serverless PHP на App Engine + Cloud Firestore и Firevel.
Материалы для обучения
- Препарируем PHP. Как устроены while, foreach, array_walk и некоторые другие страшные слова.
- Разработка под Docker. Локальное окружение. Часть 2 — Nginx+PHP+MySql+phpMyAdmin.
- Разделение обязанностей — Глава из новой книги Mathias Noback.
- Простейший бот для Telegram на PHP с помощью tahrz/simple-telegram-bot.
- Разбор RCE-уязвимости в TYPO3.
- Несколько советов как писать PHP приложения для облачной инфраструктуры.
- Как написать плагин для PhpStorm — который добавляет генерацию кода.
Аудио/Видео
- PHP Internals News #18 — C Arnold Daniels об Strict Operator Directive.
- PHP Internals News #19 — Про удаление {} для массивов и строк.
- PHP Internals News #20 — С Никитой Поповым об улучшениях инфраструктуры для тестов php-src.
- Пятиминутка PHP №57 — C впечатлениями от обзоров ICFPC 2019 и про первые шаги в Mini AI Cup 4 от Mail ru.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 160
VolCh
Какой сложный план закопать стюардессу придумали… Но явно лучше начального, Parse error — гениально. Хотя и не логично :)
VolCh
Вам сложно меня понять. Я с прошлого тысялетия мечтал, чтобы отключили <? везде...