PHP-Дайджест № 121 (20 ноября – 10 декабря 2017)

074a70f5144b8729a512be534ccf6910.jpg


Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.2.0, Symfony 4 и другие релизы, предложение из PHP Internals, материалы по фреймворкам, асинхронный PHP, порция полезных инструментов, и многое другое. Приятного чтения!


f574e9991c42407b8fa789a66b854f8d.png Новости и релизы


  • PHP 7.2.0 — Долгожданный мажорный релиз PHP доставлен строго по расписанию. 236 коммитеров и 4456 коммитов. Спасибо всем контрибьюторам и релиз-менеджерам за проделанную работу! В свежей версии интерпретатора улучшена производительность, а также ряд других улучшений:
    • Новый тип object
    • Криптографическая библиотека Sodium в ядре
    • Хеширование пароля с помощью Argon2
    • Эмуляции подготовленных выражений
    • Расширение типа параметра
    • Множество функций объявлены устаревшими

    → Полный список изменений

    Подробнее о том, как установить PHP 7.2 на различных ОС.

  • Symfony 4 — Не просто обновление, а переосмысленный фреймворк.
    • Автоматическая установка пакетов с помощью Symfony Flex
    • Авторегистрируемы и автоподключаемые сервисы
    • Микрофреймворк из коробки: Symfony 4 приложение на 70% меньше, чем Symfony 3
    • Webpack Encore для работы с фронтендом
    • И множество других улучшений
  • habrДоступен PhpStorm 2017.3
  • PSR-15 Server Request Handlers — Стандарт обработчиков запросов и middleware перешел в стадию ревью.
  • PHP 7.0.26
  • PHP 7.1.12


c9ee7880391644e4aef6cc28ca681ab0.png PHP Internals


  • RFC: Explicit call-site pass-by-reference — Отличное предложение от Никиты Попова. На данный момент тот факт, что функция принимает аргумент по ссылке обозначается только в определении самой функции:
    function inc(&$num) { $num++; }
     
    $i = 0;
    inc($i);
    var_dump($i); // int(1)
    

    Предлагается сделать возможным явное указание передачи по ссылке. Тем самым предупреждая разработчика о том, что переданная переменная изменится:
    function inc(&$num) { $num++; }
     
    $i = 0;
    inc(&$i);
    var_dump($i); // int(1)
    


cf862d9072784d04b621238ec137f2ca.png Инструменты


  • yiisoft/di — Экспериментальный независимый от фреймворка и совместимый с PSR-11 DI-контейнер и инжектор от команды Yii.
  • PHPStan 0.9 — Отличный статический анализатор для PHP. Подробнее о релизе 0.9 в посте автора. Онлайн-песочница для проверки кода.
  • Indatus/trucker — Пакет для использования удаленных ресурсов API (обычно RESTful) как моделей в стиле ActiveResource.
  • coraxster/flysystem-owncloud, coraxster/flysystem-aws-s3-v3-minio — Пара провайдеров для Flysystem: Owncloud и Minio соответственно. Прислал corax.
  • acelot/automapper — Автомаппер данных для PHP 7. Прислал eee.
  • javibravo/simpleue — Простая очередь и воркеры с поддержкой AWS SQS, Redis, Beanstalkd в качестве бэкенда.
  • rectorphp/rector — Инструмент для обновления ваших приложений на основе AST.
  • apioo/fusio — Открытая платформа управления API на PHP.
  • TinyLara/TinyLara — Простой микрофреймворк.
  • arvenil/ninja-mutex — Реализация мьютекса для PHP с поддержкой различных адаптеров (flock, memcache, mysql, redis, …).


329bec7c1e914963a1c5d2f2bfe99995.png Материалы


  • 96b65e92179a40f2bd1884549973ddd5.png Symfony
    • Symfony 3.4.0 — Список новых возможностей.
    • habrБудущий релиз Symfony 4.0 и проект с использованием Symfony Flex
    • Обзор Symfony 4
    • Добавляем GraphQL API в приложение Symfony Flex
    • ruНеймспейсы и организация сервисов бизнес-логики в Symfony
    • krlove/async-service-call-bundle — Бандл позволяет вызывать методы сервисов приложения асинхронно в фоновом php-процессе. Прислал Андрей Мищенко
    • wouterj/WouterJEloquentBundle — Интегрирует Eloquent ORM из Laravel в Symfony
    • Неделя Symfony #569 (20–26 ноября 2017)
    • Неделя Symfony #570 (27 ноября — 3 декабря 2017)
    • Неделя Symfony #571 (4–10 декабря 2017)

  • 569de4298b764a33894aa517e74324f9.png Yii
    • Yii PHP Framework принял AMQP Interop — В официальный компонент Yii для работы с очередями yiisoft/yii2-queue добавлена поддержка queue-interop/amqp-interop, что означает автоматическую поддержку многих AMPQ-пакетов. Первый шаг на пути к стандартизации работы с очередями между фреймворками.
    • videoruПавел Климов: «Ф«Yii"лософия»
    • videoruПавел Климов: «Yii: миграции и инсталляции»

  • 314bd0f0dfc54e3fa7f0c0daef1a2d25.png Laravel
    • Конвертер SQL-запроса в синтаксис Laravel Query Builder
    • jarektkaczyk/eloquence — Полезные расширения для Eloquent ORM.
    • habrСоздание собственных PHP функций в Laravel проекте

  • 8bead8b690f148298fc7c479f1449eda.png Zend
    • Неделя Zend Framework 2017–11–30
    • Неделя Zend Framework 2017–12–07

  • Async PHP
    • videoruРоман Пронский: «Асинхронный PHP» — Обзорный доклад от меня.
    • ReactPHP PromiseStream: О конвертации промиса в стрим и наоборот
    • Создание клиента для Memcached на ReactPHP: юнит-тестирование промисов
    • Расширение дочерних процессов для ReactPHP
    • Введение в промисы ReactPHP

  • CMS
    • Месяц WordPress: ноябрь 2017
    • Magento Tech Digest #7 — News, Tutorials and Tools (November 14 — December 4, 2017)

  • Найди уязвимость в PHP-коде — Каждый день декабря публикуется небольшой кусок кода с уязвимостью и подробным объяснением.
  • Как читать большие файлы на PHP
  • Тюнинг PHP-FPM с использованием 'pm static'
  • Оптимизация markdown-парсера с помощью Blackfire.io
  • habrOpensource нам строить и жить помогает: интервью разработчика Yii Framework Александра Макарова
  • habrSelenium Manager: история одного интерфейса
  • habrАрхитектура сервиса сбора и классификации объявлений жилья из Вконтакте
  • habrКонструктор XML-строки из PHP-массива
  • habrЕщё один Telegram-бот для видеонаблюдения
  • habrРегулярные выражения для самых маленьких

cc24d9c95c9841988f8299a8b285e6f6.png Занимательное


  • Переход с PHP на GO… и обратно
  • Хорошая иллюстрация принципа KISS

    https://t.co/rORz8xdCQp is a single PHP file called «index.php» generating $2,342.04 in a day. No frameworks. No libraries.

    — Pieter Levels @ (@levelsio) December 7, 2017

Спасибо за внимание!

Если вы заметили ошибку или неточность — сообщите, пожалуйста, в личку.
Вопросы и предложения пишите на почту или в твиттер.

Прислать ссылку
Поиск ссылок по всем дайджестам

← Предыдущий выпуск: PHP-Дайджест № 120

© Habrahabr.ru