
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.2.0 Alpha 2, пара новых RFC, материалы с YiiConf и FWDays, PHP руткит, и многое другое.
Приятного чтения!
Новости и релизы
- PHP 7.2.0 Alpha 2 — Запланирована еще одна альфа перед feature-freeze 20 июля. Список нововведений можно найти в прошлом выпуске дайджеста.
- Phalcon 3.2.0 — Обзор новых возможностей.
PHP Internals
- RFC: Retry functionality — Предлагается расширить try-catch-finally блоком и ключевым словом retry. В случае бросания соответствующего исключения при наличии retry, блок try будет повторяться:
try { somethingSketchy(); } retry 3 (RecoverableException $e, $attempt) { echo "Failed doing sketchy thing on try #{$attempt}. Retrying..."; sleep(1); } catch (RecoverableException $e) { echo $e->getMessage(); }
try { somethingSketchy(); } catch (RecoverableException $e) retry; // Go to top of try block }
- RFC: Unary null coalescing operator — Предлагается реализовать унарную версию оператора
??, добавленного в PHP 7.0:
if ($_POST["action"]?? === "submit") { // Form submission logic } else { // Form display logic }
Инструменты
- amphp/amp 2.0.0 — Мощный асинхронный фреймворк с лаконичным интерфейсом благодаря генераторам. Также доступен ряд дополнительных компонентов: асинхронные mysql и postgres клиенты, DNS-резолвер, HTTP/WebSocket сервер, и другие.
- wapmorgan/ServerAvailabilityMonitor — Утилита мониторит серверы на доступность и присылает отчеты об ошибках на почту. Поддерживает http, mysql, pgsql, memcache и redis. Прислал wapmorgan.
- paragonie/sapient — Библиотека для обеспечения безопасности API, даже когда TLS сломан. Пост в поддержку.
- genkgo/mail — Библиотека для отправки почты. Годная альтернатива PHPMailer или Swift Mailer.
- prooph/event-store — EventStore на PHP 7.1 для реализации паттерна Event Sourcing.
- jonathantorres/construct — Инструмент генерирует структуру папок и файлы для нового PHP-проекта.
- wikimedia/composer-merge-plugin — Плагин для Composer, который объединяет несколько composer.json файлов налету. Удобно для разделения проекта на внутренние компоненты со своими зависимостями.
Материалы для обучения
Symfony
- Разработчики Symfony представили Webpack Encore — Инструмент для управления фронтенд-ресурсами, который позволяет легко конфигурировать WebPack для проектов не только на Symfony.
Symfony 4: структура приложения
Symfony 4: Тестируем плагин Symfony Flex- Неделя Symfony #546 (12-18 июня 2017)
- Неделя Symfony #547 (19-25 июня 2017)
Yii
Laravel
- Виртуальный номер и голосовое меню c помощью Laravel и Twilio, а также управление по SMS
- nunomaduro/laravel-zero — Микрофреймворк для консольных приложений на основе компонентов Laravel.
- Уведомления в Laravel
- Очереди в Laravel
Zend
- Конвертация объектов в массивы и обратно с помощью zend-hydrator
- Неделя Zend Framework 2017-06-22
- Неделя Zend Framework 2017-06-15
CMS
- Drupal 8.3.4 и 7.56 с устранением критической уязвимости
Создание быстрых и более оптимизированных сайтов на WordPress
Создаем свой кастомный плагин Style – Темизация Views в Drupal 8
- Ваш интерпретатор под угрозой — PHP руткит — Автор демонстрирует, как легко можно реализовать руткит в виде расширения PHP и насколько это опасно.
- PHP Internals Book — Значительно пополнен раздел PHP 7.
- Обзор реализаций монады Maybe на PHP.
- Применимо ли снэпшот-тестирование в PHP? — Туториал по использованию spatie/phpunit-snapshot-assertions.
- Туториал по Event Sourcing
- Простой чат на ReactPHP
- Для чего нужны неизменяемые объекты на примере даты
- Шардинг с помощью Doctrine
- Планы релизов CakePHP
- Неразрывные пробелы в именах тестовых методов — Интересная идея.
- О масштабировании сервиса на AWS, Kubernetes, React, PHP, и Elixir
- Пишем бот для трейдинга криптовалют
Разворачиваем PHP-приложение с помощью Docker
Пользовательские типы в PHP
PHP fwdays '17: Как все прошло и видео докладов
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
Прислать ссылку
Быстрый поиск по всем дайджестам
< Предыдущий выпуск: PHP-Дайджест № 110
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (18)

Gemorroj
26.06.2017 02:20+6retry стремный с точки зрения программиста (какой-то goto), но от бизнеса реально приходят требования, сделать несколько попыток какого-то проблемного действия (работа со сторонними нестабильными сервисами, например).
retry просто решает такую задачу.
Nicklasos
26.06.2017 13:02+3Все сторонние сервисы нужно считать нестабильными, если к ним стучишься через интернет.
Сам использую вот этот retry. Но там нельзя указать тип исключения, как в данном RFC.
DjSebas
26.06.2017 17:00Никто ведь не запрещает чуть расширить данное решение? Вот пример написанный буквально за 15 минут http://sandbox.onlinephpfunctions.com/code/4457a255223403c23af0b9e734510e4ff6ea444b
Причем без злосчастного goto.

ghost404
28.06.2017 20:55+1Пара советов:
- GET запросы к сторонним сервисам лучше кешировать у себя и обновлять кеш по крону, а не по запросу от пользователя.
- POST запросу лучше повторять с некоторым временным интервалом, чтоб не досить чужой сервис. А еще лучше их ставить в очередь на обработку, и в случае ошибки, повторно закидывать в очередь.

a-tk
26.06.2017 14:24То есть рубям можно, а похапэ нельзя? При том, что в PHP синтаксис предполагается более гибкий.
Между прочим, во многих языках не хватает…
Finesse
Зачем нужна унарная версия оператора '??',
когда есть оператор '@'?
Finesse
Оператор '??' более быстрый, потому что не приводит к генерации ошибок.
kruslan
Сам спросил — сам ответил?)
nazarpc
Почему-то у некоторых сильно бомбит когда они видят
@не зависимо от контекста.Сам уже давно использую
@для подобных целей, недавно с переходом на PHP 7+ заменил в некоторых местах на??, в остальных осталось.На самом деле есть некоторые преимущества у
??— он работает только с несуществующими элементами массивов/свойствами объектов, не скрывая ошибок, которые могут при этом возникать. Не то чтобы это было большой проблемой для меня, но всё же??будет более чистым способом достичь того же результата.baldrs
Оператор @ это антипаттерн, он всего лишь подавляет вывод ошибок. Если вам нужен оператор @ вы что-то не так делаете.
SerafimArts
Да ладно? А как удалить файл без использования "собачки" не подвергая код рейс-кондишн ошибкам? Есть идеи?
symbix
Легко:
Что-что, у вас php errors все еще не завернуты в исключения? Ау, бросайте каменный топор уже, мамонты вымерли!
SerafimArts
Такой код будет работать только в 7.0+, может быть к счастью. В 5.6 и ниже — исключение бросается в месте декларации set_error_handler.
SerafimArts
P.S. тогда уж вот так:
А в целом, согласен, что-то я не подумал =)
Big_Shark