Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.0 RC3, поддержка Composer-зависимостей на GitHub, обновление стандартов PSR, RFC предложения из PHP Internals и о координации проекта PHP, порция полезных инструментов, подкасты, митапы, и многое другое.
Приятного чтения!
Новости и релизы
- GitHub добавил поддержку графа зависимостей PHP — Файлы composer.json будут автоматически анализироваться на предмет небезопасных зависимостей. а репозитории получать соответствующие пул-реквесты с обновлениями.
- PHP-FIG нужна ваша помощь для обновления PSR-стандартов! — Группа PHP-FIG предлагает поэтапное добавление деклараций типов для возвращаемых значений и параметров в уже принятых стандартах PSR. Для того чтоб в современных приложениях можно было пользоваться преимуществами типов, но в то же время оставить стандарты доступными для старых приложений.
- PHP 7.4.0 RC3 — Очередной релиз-кандидат доставлен по расписанию. Осталось всего 3 RC до выхода PHP 7.4. Тем временем доступно руководство по миграции с PHP 7.3.x на PHP 7.4.x – спасибо lex111 за перевод.
- PHP 7.3.10, PHP 7.2.23 — Исправлены ошибки безопасности, всем пользователям рекомендуется обновиться.
- Ближайшие мероприятия:
- 19 октября, Ульяновск: Panda Meetup #28 Back-end (PHP)
- 20 октября, Харьков: ThinkPHP #19
- 24 октября, Минск: PHP Meetup #30
- 24 октября, Санкт-Петербург: Symfony St. Petersburg Meetup #7
- 26 октября, Ростов-на-Дону: PHP митап #1
- 26 октября, Киев: Symfony Camp UA 2019
- 19 октября, Ульяновск: Panda Meetup #28 Back-end (PHP)
PHP Internals
- [RFC] Object Initializer — Предлагается реализовать синтаксис быстрой инициализации объектов: Скрытый текстКоротко о предложении в посте автора и подробнее в подкасте PHP Internals News #30 с ним же.
class Car { public int $yearOfProduction; public string $vin; } $car = new Car { yearOfProduction = 2019, vin = "1FTFW1CVXAFD54385", }; $car = new Car { yearOfProduction = 2019, }; // throws RuntimeException: Initialization of Car class object failed due to missing required properties
- [RFC] Reclassifying engine warnings — Бросаемые нотисы и ворнинги в движке PHP были пересмотрены и по результатам голосования в PHP 8.0 имеем:
• Переменная не определена: будет бросаться Warning;
• Обращение к несуществующему индексу в массиве: Warning;
• Деление на ноль: Исключение, а также будет добавлена функцияfdiv()
, допускающая деление на ноль;
• Невалидный аргумент в foreach(): Warning;
• И все остальные изменения прошли голосование и приняты.
Подробнее в подкасте PHP Internals News #29 c Никитой Поповым. - Координация проекта PHP — Пока в Internals разгорались драмы, кое-что хорошее тоже было. Dan Ackroyd создал документ, в котором описаны актуальные задачи и обсуждения проекта. Если вы хотели бы помочь PHP, но не знаете как – этот документ хорошая отправная точка.
Инструменты
- cycle/orm — Мощная ORM, которую можно использовать и как DataMapper и в стиле ActiveRecord. Доступна подробная документация.
- ssx/skrub — Пакет для удаления ненужных файлов в зависимостях, может быть полезно для уменьшения Docker-образов.
- squizlabs/PHP_CodeSniffer 3.5.0 — Обновление c полной поддержкой стандарта PSR-12.
- infection/infection 0.14.0 — Фреймворк для мутационного тестирования. В новой версии 3 новых мутатора, улучшена производительность, снижено потребление памяти, и другие улучшения.
- solodkiy/mysql-error-parser — Библиотека для разбора ошибок MySQL. Прислал doctorx.
- alecrabbit/php-console-spinner — Красивые консольные спиннеры.
Symfony
- В Symfony добавлен новый компонент String для работы со строками в объектном стиле.
- Лучшие практики Symfony теперь все в одном месте.
- Геттеры/сеттеры и проблема с инкапсуляцией в Symfony проектах
Laravel
- spatie/laravel-model-states — Пакет добавляет поддержку состояния в моделях. Совмещает паттерн state и конечные автоматы.
- Hunternnm/laravel-roadrunner — Простой мост для работы Laravel и Roadrunner. Прислал hunternnm.
- CI для Laravel 6 на GitHub Actions
- DDD — новый хелпер для отладки в Laravel 6
- Сравнение Inertia.js и Livewire
- Серия роликов о тестировании в Laravel
- Laracasts: Laravel 6 с нуля
Yii
- YIMP — Панель управления для Yii 2 на Bootstrap 4
- Yii 2.0.27, Debug 2.1.9 и прогресс по Yii 3, включая интересный эксперимент по использованию cycle/orm в качестве БД-слоя.
Async PHP
- seregazhuk/php-watcher — Пакет для автоматического рестарта PHP-приложений при изменении файлов. Может быть удобен при разработке демонизированных PHP-приложений.
- clue/reactphp-docker — Асинхронный клиент для Docker Engine API. Пост в поддержку.
- Пишем RESTful API с помощью ReactPHP: Загрузка картинок, Отдаем статику
Материалы для обучения
- Matthias Noback: Используем phploc для быстрой оценки качества приложения, Part 2
- doganoo/PHPAlgorithms — Подборка популярных алгоритмов из книги «Cracking the Coding Interview» с реализацией на PHP.
- Самые популярные магические методы в PHP проектах
- Подробно о том, что такое абстракции в разработке
- gabrielrcouto/awesome-php-ffi — Примеры использования FFI из PHP 7.4.
- Проверка иммутабельности с помощью Psalm
- Больше чем RCE или несколько способов эксплуатации уязвимостей
unserialize()
. - Четыре столпа PSR
- PHP-библиотеки для e-commerce: работа с АТОЛ и Payture, парсинг кодов GS1 и другие задачи.
- Странные они, статические переменные в PHP
- PHP Xdebug proxy: когда стандартных возможностей Xdebug не хватает.
- Code style как стандарт разработки
- PHP, почём абстракции для народа?
Аудио/Видео
- Грамотное ООП — Видео доклада с PHP Russia 2019
- Производительность PHP-бэкенда. Видео с Badoo PHP Meetup #3
- Стрим от Derick Rethans, в котором он фиксит баг в Xdebug.
- PHP Internals News #28 — С Andreas Heigl о переносе документации PHP из SVN в Git.
- PHP Internals News #27 — С Никитой Поповым о необходимой помощи в добавлении типов к внутренним функциям.
- Пятиминутка PHP:
• #68 Drupal — О современном положении дел в популярной CMS системе Drupal.
• DDD #5 — Value-Objects
• DDD #6 — Services & Modules
• DDD #7 — Парадигмы моделирования и многоуровневая архитектура
Занимательное
- ElePHPant.me — Сайт для обмена слониками.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 164