PHP-Дайджест № 85 – интересные новости, материалы и инструменты (24 апреля – 15 мая 2016)

4b586f55b2a3424da5d8c2f968db7a2a.jpg

Предлагаем вашему вниманию очередную подборку со ссылками на новости и материалы.

Приятного чтения!

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


  • PHP 5.5.35, 5.6.21, 7.0.6 — Обновления актуальных веток с исправлениями проблем безопасности.
  • Проблема безопасности в IDE от JetBrains — Уязвимость содержится во всех IDE на платформе IntelliJ версии v2016.1 и старее, включая PhpStorm. Апдейты выпущены, обновляемся.
  • habrМножество уязвимостей в ImageMagick, одна из которых ведёт к RCE
  • PSR-14 Event Manager — Черновик нового стандарта от группы PHP-FIG.
  • State of the FIG — В PHP-FIG наметился разлад, а несколько представителей выразили желание покинуть группу, так как практически не принимают участие в обсуждении новых стандартов: Laravel, Propel, Doctrine, Guzzle. Также в ответ на чрезмерную бюрократизацию появилась инициатива PHP Community Driven Standards, в рамках которой предлагается дать возможность участвовать в создании стандартов всем желающим. Будем надеяться на дальнейшую эффективную работу PHP-FIG и интересные предложения от сообщества.
  • DevConf-2016 — 17 июня в Москве пройдет очередная ежегодная конференция для веб-разработчиков. PHP-секция представлена интересными заявками: «Развитие ветки PHP-7.*» от Дмитрия Стогова, «Безопасность: от базовых принципов до особенностей PHP» от Александра Макарова, «Как Badoo перешли на PHP7 и сэкономили $1M» от Юрия Насретдинова и другие.
  • habrYii 2.0.8 — Под капотом сотня исправлений и улучшений.
  • Bolt 3.0.0 — Релиз популярной CMS на компонентах Symfony.
  • Go! AOP Framework 2.0.0

c9ee7880391644e4aef6cc28ca681ab0.png PHP


  • RFC: Pipe Operator — Предлагается портировать оператор |> из Hack, что позволит записывать цепочки вложенных вызовы в более читаемом виде:
    $ret = scandir($arg)
        |> array_filter($$, function($x) { return $x !== '.' && $x != '..'; })
        |> array_map(function ($x) use ($arg) { return $arg . '/' . $x; }, $$)
        |> getFileArg($$)
        |> array_merge($ret, $$);
    
    

  • RFC: Semi-Automatic CSRF Protection — Предлагается реализовать полуавтоматическую защиту от CSRF из коробки с помощью сессий.
    Форму

    можно автоматически будет обезопасить с помощью вызова
    session_start(['csrf_rewrite'=>SESSION_CSRF_POST, 'csrf_validate'=SESSION_CSRF_POST]);
    
    

  • RFC: Intersection Types — Предлагается сделать возможным указание группы типов для аргументов. При этом передаваемое значение должно реализовывать все типы:
    function RecordsToList(Countable & Traversable $input): String { }
    
    

    В случае если также будет принято предложение RFC: Union Types, станет возможным гибкое указание типов:
    function RecordsToList(Array | (Countable & Traversable) $input): String { }
    
    

  • RFC: Simple Annotations — Упрощенные аннотации в противовес атрибутам, предложенным ранее. В данном случае аннотации это массив PHP-выражений.
  • RFC: Nullable Types — Принято предложение, которое позволяет передавать null в качестве аргумента с указанным типом:
    function foo_nullable(?Bar $bar) {}
     
    foo_nullable(new Bar); // valid
    foo_nullable(null);    // valid
    foo_nullable();        // invalid
    
    

  • RFC: Catching Multiple Exception Types — Предложение принято. В PHP 7.1 станет возможным отлов нескольких типов исключений в одном catch-блоке:
    try {   
        // Some code...
    } catch (ExceptionType1 | ExceptionType2 $e) {
       // Code to handle the exception
    } catch (\Exception $e) {
       // ...
    }
    
    

  • PHP 7.1 — В июне ожидается уже первая альфа PHP 7.1. Также для грядущей версии выбраны релиз-менеджеры: Davey Shafik и Joe Watkins.
  • @PHPRFCBot — Твиттер-аккаунт для тех, кто хочет следить за новыми RFC для PHP. Также напомню про специальный ресурс php-rfc-watch.beberlei.de для мониторинга RFC.

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


  • undemanding/difference — Библиотека позволяет оценить различия между изображениями.
  • sensiolabs-de/deptrac — Инструмент статического анализа кода для определения зависимостей между слоями приложения. Видеотуториал и пост в поддержку.
  • ronanguilloux/IsoCodes — Библиотека для валидации различных стандартных кодов: Zip-коды 175 стран, телефонные номера, номера кредитных карт, ISBN, национальные идентификационные коды и другие.
  • rocketeers/rocketeer — Инструмент для запуска задач и развертывания приложений. Туториал по использованию.
  • paragonie/halite — Криптографическая библиотека для PHP. Обертка над libsodium. Пост об использовании в поддержку.
  • K-Phoen/Rusty — Инструмент позволяет реализовать тесты в аннотациях а-ля Rust.
  • webdevops/clitools — Набор консольных инструментов для ускорения работы с Docker, PHP, MySQL.
  • usmanhalalit/pixie — Годный query builder.
  • cboden/Binky — Консольный мини-клиент для AMQP.
  • tightenco/collect — Коллекции из Laravel отдельным пакетом.
  • ihor/Nspl — Набор полезных функций для программирования в функциональном стиле.
  • slevomat/coding-standard — Расширенный стандарт кодирования для PHP_CodeSniffer.
  • bartblaze/PHP-backdoors — Подборка бэкдоров на PHP.

329bec7c1e914963a1c5d2f2bfe99995.png Материалы для обучения


  • Symfony
  • Yii
  • Laravel
    • spatie-custom/blender — Шаблон и скелет приложения на Laravel.
    • laravel/valet — Легковесное рабочее окружение для Laravel (и не только) под Mac OS X. Использует веб-сервер Caddy, Dnsmasq, и ngrok.

  • Zend Framework
  • Неизменияемые объекты — Что такое, для чего нужны и как использовать.
  • INI директивы это зло — О том, во что обходится добавление новых конфигурационных директив для включения/отключения фич в PHP.
  • В направлении CQRS, Command Bus — Об использовании командной шины в построении приложений согласно паттерну Command Query Responsibility Segregation.
  • Никогда не используйте null — Что лучше использовать вместо null в качестве значений свойств и возвращаемых значений.
  • О сборщике мусора сессий в PHP
  • В поиске фабрики анонимных классов, 2 — Автор экспериментирует с eval() с целью добавить трейты к классу динамически.
  • Пишем SQL, который работает на PostgreSQL, MySQL и SQLite
  • Небольшой обзор альтернативных реализаций PHP: HippyVM, JPHP, Tagua VM, Peachpie
  • Бинарный вебшел через OPcache в PHP 7 — Интересный пост о том, как зловредный код может быть спрятан в OPcache.
  • habrРазговор о MVC и архитектуре веб-приложений
  • habrРабота с WAV-файлами с использованием PHP
  • habrДайджест интересных материалов из мира Drupal #20
  • habrОбновление PHP до 7.0.6 может «сломать» ваш код
  • habrПроверка PHP 7
  • habrИсповедь Битрикс хейтера
  • habrРазработка чат-бота для Facebook Messenger
  • habr5 стадий API: что мы поняли, написав две версии

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

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

Присылайте ссылки на интересные статьи или полезные инструменты, которых не было в PHP-Дайджестах, и ваше имя будет рядом с присланной ссылкой в выпуске.

Прислать ссылку
Быстрый поиск по всем дайджестам
← Предыдущий выпуск: PHP Дайджест № 84

© Habrahabr.ru