Свежая подборка со ссылками на новости и материалы. В выпуске: взломан репозиторий PEAR, о будущем Xdebug, конференция PHP Russia 2019, свежие релизы, RFC предложения из PHP Internals, порция полезных инструментов, и многое другое.
Приятного чтения!
Новости и релизы
- Репозиторий PEAR был взломан — Сайт pear.php.net ушел в офлайн и не работает до сих пор. Известно, что в файл go-pear.phar был внедрен вредоносный код. Вы под угрозой, если вручную скачивали этот файл после 20.12.2018. Чтобы проверить надо скачать «чистый» файл с GitHub и сравнить контрольные суммы. Для автоматизации имеется скрипт. Если вы использовали ОС с предустановленным PHP или устанавливали с помощью пакетного менеджера, то крайне маловероятно, что вы когда-либо использовали go-pear.phar. Пока сайт не работает есть обходные пути для установки PEAR-пакетов и сборки PHP из исходников.
- Будущее Xdebug — Автор Xdebug Derick Rethans рассказал о техническом долге и проблемах расширения. Он уходит из MongoDB, где проработал последние 7 лет. В ближайшее время намерен заняться рефакторингом и доработкой Хdebug, а также ищет пути финансирования. Поддержать Дерика можно на его Patreon.
- Кто оплачивает разработку PHP? — В конце поста говорится о том, что организация igphp.de совместно с некоторыми ключевыми членами команды PHP планируют решение проблемы финансирования и поддержки PHP, и в скором времени анонсируют его.
- Компания Perforce поглотит Rogue Wave Software
- PhpStorm 2019.1 EAP — Стартовала программа раннего доступа PhpStorm, благодаря которой можно первым пощупать новые возможности IDE совершенно бесплатно. Среди нововведений: отладка шаблонов Twig, возможность сортировки импортов (use выражений), поддержка phpcbf для исправления ошибок стиля, и много других улучшений.
- Onliner PHP Meetup #3 — Минск, 9 февраля.
- PHP Russia 2019 — 17 мая в Москве состоится специализированная PHP-конференция!
О том, как появилась идея и о команде можно прочитать в посте Александра Макарова. Полным ходом принимаются заявки на доклады. А также в Telegram доступны официальный канал @PHPRussiaConfChannel и чат @PHPRussiaConfTalks с обсуждениями.
PHP Internals
- [RFC] Null Coalescing Assignment Operator — Предложение было принято больше двух лет назад. И вот реализация комбинированного оператора с проверкой на null
??=
наконец-то закончена и смержена. Несмотря на кажущуюся простоту задачи, имплементация оказалась весьма нетривиальной.
Итого:$a ??= $b
эквивалентно$a ?? ($a = $b)
. В случае$a[foo()] ??= bar()
функцияfoo()
будет вызвана ровно один раз, аbar()
будет вызвана, если$a[foo()]
равноnull
(или не установлено).
В тему хороший пост о других коротких операторах в PHP. - [RFC] New custom object serialization mechanism — Свежий RFC от Никиты Попова. Предлагается ввести новый механизм сериализации объектов, добавив пару магических методов:
// Returns array containing all the necessary state of the object. public function __serialize(): array; // Restores the object state from the given data array. public function __unserialize(array $data): void;
Данное изменение призвано исправить проблемы интерфейсаSerialiazable
. К сожалению, исправить сам интерфейс невозможно, но в случае принятия предложения будет рабочая альтернатива. - [RFC] Code free constructor — Предлагается добавить автоматический конструктор, задача которого инициализировать свойства:Скрытый текст
class MotorCycle { public $vendor; public $cc; public $whells = 2; public function __construct($vendor, $cc) { $this->vendor = $vendor; $this->cc = $cc; } //other methods } class MyCustomMotorCycle extends MotorCycle { public function __construct($cc, $whells) { parent::__construct("Custom", $cc); // $this->cc = $cc; this statement will be added within proposed realisation $this->whells = $whells; } }
для кода выше предлагается следующий альтернативный синтаксис:class MotorCycle($vendor, $cc){ public $whells = 2; //other methods }; class MyCustomMotorCycle($cc, $whells) extends MotorCycle("Custom", $cc){ };
Инструменты
- API Platform — Фреймворк на базе компонентов Symfony для создания API. В новой версии поддержка MongoDB, Elasticsearch, OpenAPI v3 и много другого.
- xobotyi/php-mime-type — Библиотека позволяет определить известные расширения по MIME-типу и наоборот. Прислал xobotyi.
- PHPStan 0.11 — Статический анализатор для PHP. Анонс релиза. Вдогонку видео о внутренностях PHPStan от одного из мейнтенеров.
- Symplify/Statie — Простой генератор статических сайтов на PHP. Быстрый старт.
- leocavalcante/siler — Микрофреймворк реaлизован на простых функциях без использования классов. Можно использовать со Swoole
- directus/directus — Headless CMS c API.
- mgp25/Instagram-API — Библиотека дает возможность использовать скрытые в официальном API возможности Instagram.
- bmitch/churn-php — Инструмент поможет найти кандидатов на рефакторинг – файлы, которые больше всего изменялись в истории Git и имеют наибольшей цикломатической сложностью.
Symfony
- Видеозаписи SymfonyCon 2018 — Среди которых доклад Фабьена о локальном дев сервере.
- Неделя Symfony #629 (14-20 января 2019)
- Неделя Symfony #630 (21-27 января 2019)
Laravel
- beyondcode/laravel-mailbox — Пакет для обработки входящих email.
- spatie/laravel-eventsauce — Event sourcing для Laravel-приложений на базе EventSauce.
- vanilophp/framework — E-com фреймворк для Laravel.
- Подкаст от Тейлора Laravel Snippet #2
Async PHP
- dantleech/fink — Инструмент для проверки сайта на битые ссылки. Реализован с использованием amphp/artax.
- reactphp/child-process v0.6.0 — Событийная библиотека для работы с дочерними процессами с помощью ReactPHP. Теперь с поддержкой Windows. Подробнее в посте.
CMS
- magento/magento-coding-standard — Стандарт кодирования Magento в виде правил для PHP_CodeSniffer.
- Рекомендации по использованию Drupal без фронтенда (decoupled) в 2019
Материалы для обучения
- Советы по ускорению подсчета покрытия кода. Также имеется экспериментальное расширение krakjoe/pcov, которое позволяет подсчитать покрытие быстрее, чем phpdbg.
- Почему важно полировать код до мелочей
- Интересный пост об использовании препроцессора preprocess.io для реализации веб-приложения с коммуникацией по WebSocket.
- Мое современное рабочее окружение для PHP
- Классический пост о том, когда объявлять классы финальными и свежее дополнение к нему.
- Создание сторис для Instagram из PHP
- Работа начинается с тестирования
- Сравниваем PHP FPM, PHP PPM, Nginx Unit, React PHP и RoadRunner
Занимательное
- Code Galaxies — Забавная 3D визуализация взаимосвязей между Composer-пакетами.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 147