Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Свежая подборка со ссылками на новости и материалы. В выпуске: принят PSR-14 Event Dispatcher, JIT в PHP 8, тройка RFC-предложений из PHP Internals, порция полезных инструментов, и многое другое.
Приятного чтения!
Новости и релизы
- PHP 7.3.4
- PHP 7.2.17
- PHP 7.1.28
- Packagist.org переезжает на AWS
- PhpStorm 2019.1 — Отладка шаблонов Twig и Blade, поиск мертвого кода, улучшенное автодополнение и многое другое.
- Принят PSR-14 Event Dispatcher — Новый стандарт регламентирует работу с событиями в приложении. Документ определяет три интерфейса:
EventDispatcherInterface
,StoppableEventInterface
иListenerProviderInterface
, а также описывает характеристики, которым должны соответствовать все элементы и рекомендации по реализации. Подробнее можно прочитать в серии постов от одного из участников рабочей группы стандарта Ларри Гарфильда.
Примечательно, что новый диспатчер в Symfony 4.3, по сути, совместим со стандартом, но как минимум из-за использования тайпхинтаobject
, который доступен только в PHP 7.2+, использовать стандарт непосредственно в Symfony пока нельзя.
Другой пример реализации стандарта yiisoft/event-dispatcher, вероятно, будет использоваться в Yii 3.
PHP Internals
- [RFC] JIT — Предложение принято для PHP 8.0, а вот идея включить возможность в экспериментальном режиме в PHP 7.4 не нашла поддержки.
В тему отличная статья Joe Watkins о том, что такое JIT вообще и что даст его реализация для PHP. - [RFC] Change the precedence of the concatenation operator — На данный момент операторы конкатенации
.
и математические+
,-
имеют одинаковый приоритет и выполняются слева направо. Предлагается понизить приоритет конкатенации:Скрытый текстecho "sum: " . $a + $b; // текущее поведение echo ("sum: " . $a) + $b; // предлагаемое поведение echo "sum :" . ($a + $b);
- [RFC] Nullable Casting — При кастинге в примитивный тип предлагается сделать возможность кастить в null, то есть возможность использовать
(?int)$x
помимо(int)$x
. - [RFC] Spread Operator in Array Expression — Снова предлагается добавить оператор
...
для массивов. В обновленном предложении убрана поддержка массивов с нечисловыми ключами.Скрытый текст$parts = ['apple', 'pear']; $fruits = ['banana', 'orange', ...$parts, 'watermelon']; // ['banana', 'orange', 'apple', 'pear', 'watermelon'];
- Подкаст PHP Internals News #4: Short Arrow Functions with Nikita Popov, #3: Abolish Narrow Margins and Weak References with Joe Watkins
Инструменты
- ivanakimov/hashids.php — Удобная библиотека для обфускации целочисленных идентификаторов.
- smalot/pdfparser — Библиотека для парсинга PDF-файлов и извлечения информации.
- YOURLS/YOURLS — Сервис сокращения ссылок.
- cyrus-and/fracker — Инструмент позволяет в удобном виде отслеживать вызовы функций в PHP и будет полезен для исследователей безопасности.
- wasmerio/php-ext-wasm — Экспериментальное расширение, которое позволяет запускать бинарники WebAssembly прямо из PHP, подгружая их динамически. В последней версии автор увеличил производительность в 29 раз и теперь модули выполняются уже быстрее, чем аналогичные реализованные на PHP.
Symfony
- symfony/mailer — Новый компонент для отправки писем.
- Неделя Symfony #639 (25-31 марта 2019)
- Неделя Symfony #640 (1-7 апреля 2019)
Laravel
- thepinecode/blade-filters — Фильтры для Blade вдохновленные аналогичной возможностью из Twig. Пост от автора в поддержку.
- 20 малоизвестных фишек Laravel
- Работаем с null-объектами в Laravel
- Гайдлайны по PHP и Laravel от Spatie
- Автоматическое обнаружение событий и слушателей — добавлено в Laravel 5.8.9.
- Подкаст Телора Laravel Snippet #10
- Полезные репозитории с Eloquent?
Yii
- Preparing Yii for the long run — Теперь фреймворк можно официально поддержать материально. Особенно актуально для тех, у кого мало времени, но поддержать хочется.
- Yii development notes #27
Async PHP
- WyriHaximusNet/docker-php — Docker-образы оптимизированные для ReactPHP.
- phpinnacle/ridge — Асинхронный клиент для AMQP.
- Пятиминутка PHP №49 — Асинхронное программирование в PHP в 2019 году.
Материалы для обучения
- Как на самом деле работают переменные окружения в PHP — Обязательная к прочтению статья обо всех нюансах переменных окружения, по следам инцидента с Laravel.
- Как замокать финальный класс с помощью PHPUnit
- Деструктурирование массивов в PHP
- Буфер вывода в PHP — Более подробно о теме на русском можно почитать тут и тут.
- Тесты на Codeception для PHP-бэкендов
- Яндекс.Алиса и бот Telegram на PHP с единым функционалом
- Своя временная почта: телеграм бот
- Современный PHP — прекрасен и продуктивен
Занимательное
- ircmaxell/php-c-parser — Парсер языка C реализованный на PHP.
- memory-agape/php-java — Эмулятор JVM на PHP.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в Telegram-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 152