Свежая подборка со ссылками на новости и материалы. В выпуске: свежие RFC предложения и другие новости из PHP Internals, порция полезных инструментов, и много других материалов и новостей!
Приятного чтения!
Новости и релизы
- PHP Russia 2019 – Москва, 17 мая — Прием заявок на доклады подходит к концу и уже есть несколько подтвержденных докладчиков! Прежде всего это топ контрибьюторы PHP-ядра Никита Попов и Дмитрий Стогов, также автор spiral/roadrunner Антон Титов, автор библиотеки PHP-ML для машинного обучения на PHP Arkadiusz Kondas и другие.
- PHP fwdays'19 – Киев, 1 июня — На конференции в Киеве также намечается интересная программа и уже заявлен создатель Symfony Fabien Potencier.
Для читателей PHP-Дайджеста скидка 15% по промокоду: PHP-digest-fwdays. - Enrico Zimuel присоединился к команде Elastic — После 11 лет работы в Zend, Enrico переходит в Elastic, где будет ответственным за библиотеки PHP для Elasticsearch. Прислал @dmitrybalabka. Интересна дальнейшая судьба других участников команды Zend, которые заявили об уходе из Rogue Wave еще в октябре.
PHP Internals
- [RFC] New custom object serialization mechanism — Предложение принято. В PHP 7.4 реализован новый механизм сериализации объектов и добавлено два магических метода:
Скрытый текст
// 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;
- [RFC] JIT — В JIT для PHP реализована поддержка Windows и ZTS. Последнее значит, что можно использовать в многопоточных приложениях. По предложению уже стартовало голосование, судя по ходу которого, вероятно, оно будет принято для PHP 8.0, но идея включить в PHP 7.4 не получит достаточной поддержки.
В тему также пост с бенчмарками Redis-сервера на PHP clue/php-redis-server, где автор получил прирост ~4-23% на версии с JIT. - [RFC] Arrow Functions 2.0 — Третья попытка реализовать короткие лямбды в PHP. На этот раз предлагается синтаксис
$y = 1; $fn1 = fn($x) => $x + $y;
При этом переменные из внешнего скоупа биндятся по значению автоматически и не надо использовать use().
В Internals также обсуждаются альтернативные варианты синтаксиса:($x) ==> $x + $y;
($x) => $x + $y;
- [RFC] Generator comprehensions — Концепт оформлен в полноценное предложение о реализации спискового включения (list comprehension). По сравнению с концептом, как и в коротких лямбдах, нет необходимости использовать
use()
:Скрытый текст$y = 3; $gen = [for $list as $x if $x % 2 yield $x * $y];
- [RFC] Deprecate curly braces array access — На данный момент для доступа к элементам массивов и строк можно использовать как квадратные, так и фигурные скобки. И хотя они эквивалентны, фигурные скобки все-таки не работают, например, для добавления элемента в массив
“$arr{} = 1;”
или объявления массива“$a={1,2};”
. Предлагается задепрекейтить фигурные скобки в данном контексте и оставить только квадратные. А вы используете фигурные скобки? - Подкаст PHP Internals News Episode 2: PHP Compiler and FFI — Anthony Ferrara в гостях у Derick Rethans.
- Объявлены релиз-менеджеры PHP 7.4 — Ими стали Peter Kokot and Derick Rethans.
Инструменты
- API Platform 2.4 — Под капотом MongoDB, Elasticsearch, Mercure, OpenAPI v3, CQRS, HTTP/2 Push.
- Roave/no-leaks — Плагин для PHPUnit, который поможет обнаружить утечки памяти в приложении и тестах.
- Roave/Dont — Трейты, которые блокируют использование некоторых магических методов.
- bobthecow/psysh — Отличная реализация интерактивного режима для PHP. В поддержку свежий пост о том, что такое REPL и Exploratory development.
- spatie/async — Обертка над PCNTL для простого выполнения параллельных задач. В качестве альтернативы есть еще ackintosh/snidel.
- King2500/doctrine-phpstorm-meta — Пакет улучшает автодополнение для Doctrine в PhpStorm 2019.1 благодаря .phpstorm.meta.php.
- biganfa/php2curl — Библиотека позволяет быстро трансформировать текущий контекст ($_REQUEST, $_SERVER, и т.д.) в строку запроса cURL. Прислал catanfa.
Symfony
Laravel
- spatie/laravel-personal-data-export — Пакет поможет пользователю экспортировать свои персональные данные в виде архива.
- aldemeery/sieve — Простая и элегантная фильтрация для моделей Eloquent.
- Деплоим Laravel в Kubernetes
- Об использовании представлений (view) MySQL с Eloquent
- Миграция легаси веб-приложений на Laravel
- Пожалуйста, прекращайте говорить про шаблон Репозиторий с Eloquent
Yii
- cebe/yii2-openapi — Генератор REST API приложения для Yii2 на основе OpenAPI 3.0 спецификации.
- Интервью на Hexlet с Александром Макаровым, core developer в Yii framework
Безопасность
- CSRF уязвимость в WordPress 5.1 — Анализ и разбор уязвимости, которая ведет к удаленному исполнению кода и исправлена в WordPress 5.1.1.
- Unique Rule SQL Injection Warning — Возможна SQL-инъекция в Laravel при использовании валидации
Rule::unique()
. - yet another phar deserialization in TCPDF — Анализ уязвимости в популярном пакете tecnickcom/tcpdf.
Async PHP
- clue/reactphp-redis v2.3.0 — Асинхронный клиент Redis на базе ReactPHP. В обновлении улучшена поддержка PubSub и добавлены ленивые соединения. Подробнее в блогпосте.
- xtrime-ru/TelegramRSS — Инструмент на базе Swoole конвертирует ленту постов из Telegram в RSS -фид или JSON. В поддержку хабрапост о реализации микросервисов на PHP и Swoole.
- Быстрый веб-скрапинг на ReactPHP #4: Используем прокси
CMS
- В WordPress наконец-то отказались от поддержки PHP 5.2 и повысили минимальную версию до 5.6. А к декабрю обещали повысить требования до PHP 7. По официальной статистике версиями 5.2-5.5 все еще пользуется 20% пользователей WP. При этом согласно данным W3Techs доля WordPress выросла на 3% за год и теперь его используют 33.4% из 10 млн топ-сайтов интернета.
- В WordPress 5.2 будет добавлена библиотека sodium_compat и система подписи обновлений на основе Ed25519. Это обезопасит систему автоматических обновлений.
- В Drupal из коробки добавлена поддержка JSON:API
Материалы для обучения
- Использование архитектуры серверлесс на PHP на примере PrettyCI и очередей Laravel
- Как мы сделали PHP 7 в два раза быстрее PHP 5
- Debug Oriented Programming или печаль в глазах Интегратора
- Монолит для сотен версий клиентов: как мы пишем и поддерживаем тесты
- Видео с Badoo PHP Meetup #2: о тестах и качестве кода
- Видеозаписи докладов с PHP UK 2019
Занимательное
- ircmaxell/php-compiler — Давно заброшенная идея компилятора для PHP от Anthony Ferrara получила реинкарнацию благодаря FFI в PHP 7.4. Теоретически, компилятор способен генерировать нативный машинный код и выдавать бинарник исполняемый без виртуальной машины PHP. На практике, это пока только концепт, который поддерживает всего ничего, но идея интересная.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 151
Автор: Роман Пронский