
Свежая подборка со ссылками на новости и материалы. В выпуске: фреймворк и статьи по Serverless PHP, доклад Расмуса Лердорфа о PHP в 2018 и другие видео, предложение из PHP Internals, порция полезных инструментов, и многое другое. Приятного чтения!
 Новости и релизы
- PhpStorm 2018.2 EAP — Стартовала программа раннего доступа PhpStorm, благодаря которой можно использовать новые версии IDE совершенно бесплатно. Среди нововведений: поддержка touch bar, улучшенное автодополнение с учетом неймспесов, структурный поиск и замена, упрощенная установка CodeSniffer/MessDetector, и другие улучшения.
 
 Adobe купила Magento за $1.68 млрд — Анонс в блогах Magento и Adobe.
 Вредоносный PHP-скрипт спамерского ботнета обнаружен на 5000 сайтов- PHP 7.2.6
 - PHP 7.1.18
 - Статистика использования версий PHP – 2018.1 — Традиционная компиляция статистики за полгода на основе информации, которую Composer отправляет при подключении к packagist.org. Суммарная доля PHP 7 составляет уже 78.22%. Более близкая к реальности статистика загрузок пакетов PHP из репозитория Remi.
 
 PHP Internals
- [RFC] Weak References — Черновик предложения о реализации слабых ссылок в ядре PHP. На данный момент такая возможность доступна только через расширения colder/php-weakref или krakjoe/uref.
 
 Инструменты
- Roave/BetterReflection 3.0 — Рефлексия без загрузки классов.
 - fe3dback/str — Библиотека, в которой реализовано множество функций для манипуляций со строками в ООП стиле и поддержкой многобайтных строк.
 - psecio/secure_dotenv — Секьюрный обработчик .env файлов с шифрованием.
 - php-opencv/php-opencv-examples — Примеры использования php-opencv для детектирования предметов и лиц, использования предобученных сетей. Прислал morozovsk.
 - xobotyi/emittr — Небольшая библиотека реализующая события. Прислал xobotyi.
 - atlasphp/Atlas.Query — Еще один query builder для SQL-запросов.
 - getopt-php/getopt-php — Библиотека для парсинга аргументов командной строки.
 - mindplay-dk/middleman — Простейший диспетчер PSR-7 middleware.
 - spatie/typed — Концепт улучшений типизации в PHP: дженерики, структуры, кортежи, типизированные списки.
 
 Материалы для обучения
 Symfony
- Как тестировать приватные сервисы в Symfony
 
 Деплой symfony4 через Ansistrano- twigfiddle.com — Fiddle для Twig.
 - Неделя Symfony #595 (21-27 мая 2018)
 - Неделя Symfony #594 (14-20 мая 2018)
 
 Yii
 Laravel
- spatie/laravel-event-projector — Пакет для реализации Event Sourcing в Laravel. Минитуториал.
 - ponich/eloquent-traits — Виртуальные атрибуты для моделей в Eloquent. Прислал ponich.
 - beyondcode/laravel-credentials — Пакет позволяет хранить пароли и другие секретные данные в зашифрованном виде прямо в репозитории.
 - О том, как был создан Телеграм-бот — LaravelQuizBot.
 - Конкурс блогпостов по Laravel с призом в $1500 — В рамках конкурса уже написано больше 50 постов о Laravel и продуктах экосистемы.
 
 Система автоматического документирования REST-API в Laravel проектах
 Zend
Async PHP
- clue/reactphp-ndjson — Потоковый парсер и кодировщик JSON разделенного новой строкой (NDJSON) для ReactPHP.
 - clue/reactphp-flux — Пакет позволяет ограничить количество одновременно выполняемых конкурентных задач в ReactPHP. Подробный пост о мотивации и использовании инструмента.
 
 Пишем простой чат с помощью сокетов ReactPHP: сервер, клиент, наводим красоту.- Об использовании ReactPHP в продакшне + немного бенчмарков
 
CMS
- Magento Tech Digest #17: May 21 — 28, 2018
 - Magento Tech Digest #16: May 14 — 21, 2018
 - О релизе Drupal 9 и дальнейших планах
 - Drupal JavaScript Initiative: О реализации новой админки Drupal на ReactJS
 
Serverless
- Serverless и PHP — Отличное введение в serverless на PHP, а также представление фреймворка mnapoli/bref.
 - mnapoli/bref — Фреймворк для создания и деплоя serverless-приложений на PHP.
 - Пример запуска Symfony на Bref
 - Serverless Laravel — Разворачиваем Laravel-приложение на AWS lambda с помощью Bref.
 - Производительность Serverless на PHP.
 
- Странные операторы в PHP
 - Когда empty вовсе не empty — Об особенностях empty при использовании с магическими методами.
 - Выбор парадигмы для API: gRPC vs REST vs GraphQL
 - Отличные слайды про паттерны проектирования с примерами на Symfony
 - Когнитивная сложность: легко ли человеку прочитать ваш код?
 
 Google Cloud Storage c PHP: сохранение файлов с публичным доступом
 10 (не) очевидных советов начинающим WEB-разработчикам
 Интеграция с ЕСИА на базе oauth2-client (PHP)
 Magic link или история о том, как мы упростили жизнь пользователю
 Два типа расширений PHP. Zend extension VS PHP module
 PHP, GDB и массивы
 Аудио и видеоматериалы
 Доклад создателя PHP Расмуса Лердорфа: PHP в 2018
 ThinkPHP #16 — Видеозаписи с прошедшего митапа: микросервисы, serverless.
 ScotlandPHP 2017 — Видеозаписи всех докладов.
 PHP Roundtable #070: Все о WordPress
 PHP Roundtable #071: Обсуждение PHP 7.2
 Занимательное
- PHP позволяет создавать X — Рассуждения о том, когда стоит или не стоит применять PHP.
 
Спасибо за внимание!
Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.
 
Прислать ссылку
 Поиск ссылок по всем дайджестам
 < Предыдущий выпуск: PHP-Дайджест № 130
          
 
OnYourLips
Сделаю замечание про деплой при помощи Ansistrano.
Эта статья претендует на руководство, но фактически является введением, и подобный способ деплоя применим лишь для pet projects.
Следует рассматривать Ansistrano не как продукт, а как библиотеку для своего способа деплоя. По хорошему вам стоит сделать билд приложения на специальной машине один раз,, и дальше уже использовать Ansistrano для деплоя его на разные среды (сначала тестовые, потом продакшн). Не надо использовать подход Capistrano, где приложение собирается прямо на прод-средах.
merk
Здравствуйте, спасибо за фидбэк!
Статья действительно не самая подробная, но поясняет базовые основы, которые у нас одинаковые для проектов подобного рода. Если вам интересны какие-то частные моменты, можем также об этом рассказать.
Мне не совсем понятно как вы предлагаете заранее собрать php-приложение?
Поясните пожалуйста, почему вы так считаете? Мне кажется, это вполне практичный подход
OnYourLips
Не тратятся ресурсы сервера на повторную сборку, собирается один раз и точно одинаково, деплой продакшена происходит в десятки раз быстрее, не нужны зависимости для сборки на продакшен-машине.
merk
Кажется, я понял — вы предлагаете вместо сервера напрягать сборкой какую-то отдельную билд-машину, идентичную по рабочему окружению с прод-сервером. Интересный подход! Возможно такое действительно применимо, когда нужно деплоить на кучу серверов и загрузка каждого из них критична. Мы в большинстве случаев не сталкиваемся с таким
BoShurik
Основная проблема — dev-зависимости на проде. В случае, если используется
assetic, придется ставитьjava, дляwebpack—node.js.и
merk
Согласен, таким dev-зависимостям на проде не место. Наш фронтенд, если использует node.js и webpack, то попадает на прод совсем другим способом. Деплой фронта — вообще отдельная тема)
OnYourLips
Зачем? Это не обязательно с Symfony 3.2+ и использованием переменных окружения (А начиная с 4.0 этот метод и вовсе по умолчанию).
NickyX3
забавная фигня, спасибо.
POPSuL
Интересная статья, но у меня почему-то ничего так и не завелось :(