Свежая подборка со ссылками на новости и материалы. В выпуске: 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