Свежая подборка со ссылками на новости и материалы. В выпуске: фреймворк и статьи по 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
Интересная статья, но у меня почему-то ничего так и не завелось :(