Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.3.0, Symfony 4.2, Composer 1.8.0 и другие релизы, конец поддержки PHP 5.6 и PHP 7.0, свежие предложения из PHP Internals, порция полезных инструментов, видеозаписи докладов и многое другое.
Приятного чтения!
Новости и релизы
- PHP 7.3.0 — Долгожданный мажорный релиз PHP доставлен строго по расписанию. Спасибо всем контрибьюторам и релиз-менеджерам за проделанную работу! В свежей версии интерпретатора ряд улучшений:
• Улучшения Heredoc и Nowdoc синтаксиса RFC
• Функцииjson_encode()
иjson_decode()
будут бросать исключение в случае ошибки и наличия соответствующего флага RFC
• Возможность использовать запятую после последнего аргумента функции RFC
• Добавлены функцииarray_key_first()
иarray_key_last()
RFC
• Новая функция hrtime(), которая возвращает время высокой точности и не зависит от системного времени PR
• Добавлена функцияis_countable()
для проверки на перечислимость RFC
• Использование ссылок вlist()
RFC
• Значительное улучшение сборщика мусора улучшает работу с больши́м количеством объектов PR
• Движок регулярных выражений обновлен до PCRE2 RFC
Полный список изменений в документе UPGRADING.
Очень рекомендую посмотреть руководство по миграции с PHP 7.2.x на PHP 7.3.x, спасибо lex111 за перевод. - Свет также увидели обновления PHP 5.6.39, PHP 7.0.33, PHP 7.1.25 и PHP 7.2.13. И это последние релизы веток 5.6 и 7.0, а PHP 7.1 переходит в режим поддержки безопасности. Таким образом, на данный момент актуальными остаются только ветки PHP 7.2 и PHP 7.3.
- PHP на AWS Lambda — На конференции AWS re:Invent 2018, кроме всего прочего, анонсирована поддержка кастомных рантаймов для AWS Lambda. PHP из коробки поддерживается через stackery/php-lambda-layer, но можно сделать и свою реализацию. Это значит, что вместо костылей в виде запуска через Nodejs или Go, теперь можно писать полноценные лямбды на чистом PHP.
- Composer 1.8.0
- CakePHP 3.7.0
- PHPUnit 7.5.0
PHP Internals
- [RFC] FFI — Foreign Function Interface — Концепт от Дмитрия Стогова теперь оформлен в виде полноценного предложения. Реализация даст возможность использовать функции и структуры данных из C-модулей напрямую. В качестве примера можно посмотреть на PHP-биндинг для TensorFlow. Большие возможности, правда, открывают и широкий простор для потенциальных проблем и уязвимостей, поэтому предлагается по умолчанию разрешить FFI только в CLI-скриптах и предзагруженных файлах.
- [RFC] Covariant Returns and Contravariant Parameters — Предлагается сделать более консистентным типы, в частности, разрешить «сужать» тип возвращаемого значения в наследниках, и «расширять» тип параметров.
Скрытый текст
interface X { function m(Y $z): X; } interface Y extends X { // Тут можно будет сужать тип function m(X $z): Y; } interface Concatable { function concat(Iterator $input); } class Collection implements Concatable { // А тут можно будет расширять тип function concat(iterable $input) {/* . . . */} }
Инструменты
- spatie/period — Библиотека позволяет делать сложные сравнения дат, например, найти пересечения периодов, разницу, пробелы, крайние границы и прочее.
- scrivo/highlight.php — Порт highlight.js, который позволяет подсвечивать синтаксис на сервере. Интеграция с markdown через spatie/commonmark-highlighter.
- 3v4l.org/live — Интерактивный онлайн PHP шелл (REPL).
- j6s/phparch — Библиотека для архитектурного тестирования PHP-проектов, вдохновленная archlint (C#) и archunit (Java). Разработка в процессе.
- halaxa/json-machine — Потоковое чтение (декодирование) JSON. Для потокового кодирования подойдет violet-php/streaming-json-encoder.
- DivineOmega/password_exposed — Проверяет с помощью haveibeenpwned.com API был пароль скомпрометирован.
- skollro/alexa-php-sdk — SDK для разработки скилов для Amazon Alexa на PHP.
- pyrech/composer-changelogs — В удобном виде выводит информацию об обновленных пакетах после выполнения
composer update
. - RubixML/RubixML — Библиотека для применения машинного обучения на PHP. Альтернатива php-ai/php-ml.
Материалы для обучения
-
Symfony
- Symfony 4.2.0 — Список наиболее интересных изменений тут.
- Неделя Symfony #623 (3-9 декабря 2018)
- Неделя Symfony #622 (26 ноября — 2 декабря 2018)
- EasyCorp/EasyAdminBundle 2.0.0
- Лучшие плагины PhpStorm для разработки на Symfony
- Как управлять конфигурацией в Symfony не используя классы Bundle, Extension и Configuration.
- Пятиминутка PHP Выпуск №43 — Репортаж с SymfonyCon: Using Symfony Forms with Rich Domain Models.
-
Yii
- cebe/yii2-openapi — Генератор REST API для Yii2 на основе спецификации OpenAPI 3.0.
-
Laravel
- beyondcode/laravel-websockets — WebSocket сервер для Laravel на базе Ratchet. Позволяет реализовать всякого рода приложения реального времени, без необходимости использовать Pusher. Есть демоприложение. Подробнее в анонсе инструмента, документации или коротко в видеообзоре.
- qcod/laravel-gamify — Пакет для добавления элементов игрофикации в виде очков и бейджей в Laravel-приложение. Также есть автономный движок игрофикации на базе Symfony sveneisenschmidt/yay.
- spatie/laravel-collection-macros — Набор полезных макросов для коллекций Laravel.
- Делаем резервные копии базы данных Laravel на Google Drive
- Быстрые подсказки по производительности в Laravel
-
Async PHP
- friends-of-reactphp/mysql — Асинхронный клиент для MySQL на ReactPHP. Пост в поддержку релиза о добавленных ленивых соединениях.
- walkor/shadowsocks-php — Еще один SOCKS5 прокси, клон популярного shadowsocks на базе асинхронного движка Workerman.
- Корутины в PHP на Swoole 4.x vs корутины Golang
-
CMS
- WordPress 5.0 “Bebo” — В релизе новый редактор Guttenberg и новая тема Twenty Nineteen. Старый редактор доступен в плагине Сlassic Editor и будет поддерживаться до конца 2021.
- WordPress наконец-то обновит PHP! В апреле минимальная версия будет повышена до 5.6, а к концу 2019 года – до PHP 7 (вероятно 7.2).
- Magento Tech Digest #38: Nov 26 – Dec 03, 2018
- Релиз платформы Magento 2.3.0 GA
- Magento Meetup Kharkiv №4 — видео докладов
- Система управления складом с использованием CQRS и Event Sourcing (Magento)
-
Security
- ajinabraham/CMSScan — Сканер уязвимостей в популярных CMS WordPress, Drupal, Joomla, vBulletin. Обертка над wpscan, droopescan, vbscan, joomscan.
- PHP Security Advent Calendar 2018 — В течение всего декабря каждый день публикуется интересная информация об уязвимостях в плагинах WordPress.
- Уязвимости в PHP и PHPMailer
- Slice Of PIE #01 — Ответы на вопросы по безопасности от ParagonIE.
- Пара уязвимостей в Symfony: CVE-2018-19789 (раскрытие пути загруженных файлов), CVE-2018-19790 (уязвимость редиректа в SecurityHttp)
- Ад зависимостей NPM: сравнение с Symfony, Laravel и API Platform — Анализ мейнтейнеров зависимостей популярных PHP фреймворков после того, как в популярной JS-библиотеке event-stream был обнаружен вредоносный код.
- Конфигурируем генерацию кода в PhpStorm
- 14 вредных советов о том, как писать плохо читаемый и неподдерживаемый код на PHP
- Мигрируем на password_verify и обновляем хеши паролей в существующей БД.
- создания исключений на лету — Использование анонимных классов для
- Как выруливать с legacy code, когда проект нужно было на вчера
- На-click-ать известность, или как взбудоражить робота и … остальных
Аудио и видеоматериалы
- Пятиминутка PHP Выпуск №42 — MySQL 8 и caching_sha2_password
- Подкаст PHP Roundtable #81 — О PHP-FIG 3.0, PSR-18 и другом.
Занимательное
- MagicalTux/goro — Попытка реализовать PHP на Go.
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Больше новостей и комментариев в телеграм-канале PHP Digest.
Прислать ссылку
Поиск ссылок по всем дайджестам
← Предыдущий выпуск: PHP-Дайджест № 144
Автор: Роман Пронский