- PVSM.RU - https://www.pvsm.ru -

PHP-Дайджест № 152 (11 – 25 марта 2019)

PHP-Дайджест № 152 (11 – 25 марта 2019) - 1

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

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

PHP-Дайджест № 152 (11 – 25 марта 2019) - 2 Новости и релизы

  • PHP Russia 2019 – Москва, 17 мая [1] — Прием заявок на доклады подходит к концу и уже есть несколько подтвержденных докладчиков! Прежде всего это топ контрибьюторы PHP-ядра Никита Попов и Дмитрий Стогов, также автор spiral/roadrunner [2] Антон Титов, автор библиотеки PHP-ML [3] для машинного обучения на PHP Arkadiusz Kondas и другие [4].
  • PHP fwdays'19 – Киев, 1 июня [5] — На конференции в Киеве также намечается интересная программа и уже заявлен создатель Symfony Fabien Potencier.
    Для читателей PHP-Дайджеста скидка 15% по промокоду: PHP-digest-fwdays.
  • Enrico Zimuel присоединился к команде Elastic [6] — После 11 лет работы в Zend, Enrico переходит в Elastic, где будет ответственным за библиотеки PHP для Elasticsearch. Прислал @dmitrybalabka [7]. Интересна дальнейшая судьба других участников команды Zend, которые заявили об уходе [8] из Rogue Wave еще в октябре.

PHP-Дайджест № 152 (11 – 25 марта 2019) - 3 PHP Internals

  • [RFC] New custom object serialization mechanism [9] — Предложение принято. В PHP 7.4 реализован новый механизм сериализации объектов и добавлено два магических метода:
    Скрытый текст

    // Returns array containing all the necessary state of the object.
    public function __serialize(): array;
     
    // Restores the object state from the given data array.
    public function __unserialize(array $data): void;
    
  • [RFC] JIT [10] — В JIT для PHP реализована поддержка Windows и ZTS. Последнее значит, что можно использовать в многопоточных приложениях. По предложению уже стартовало голосование, судя по ходу которого, вероятно, оно будет принято для PHP 8.0, но идея включить в PHP 7.4 не получит достаточной поддержки.
    В тему также пост [11] с бенчмарками Redis-сервера на PHP clue/php-redis-server [12], где автор получил прирост ~4-23% на версии с JIT.
  • [RFC] Arrow Functions 2.0 [13] — Третья попытка реализовать короткие лямбды в PHP. На этот раз предлагается синтаксис
    $y = 1;
    $fn1 = fn($x) => $x + $y;
    

    При этом переменные из внешнего скоупа биндятся по значению автоматически и не надо использовать use().
    В Internals также обсуждаются альтернативные варианты синтаксиса:

    ($x) ==> $x + $y;
    

    ($x) => $x + $y;
    
  • [RFC] Generator comprehensions [14]Концепт [15] оформлен в полноценное предложение о реализации спискового включения (list comprehension). По сравнению с концептом, как и в коротких лямбдах, нет необходимости использовать use():
    Скрытый текст

    $y = 3;
    $gen = [for $list as $x if $x % 2 yield $x * $y];
    
  • [RFC] Deprecate curly braces array access [16] — На данный момент для доступа к элементам массивов и строк можно использовать как квадратные, так и фигурные скобки. И хотя они эквивалентны, фигурные скобки все-таки не работают, например, для добавления элемента в массив “$arr{} = 1;” или объявления массива “$a={1,2};” . Предлагается задепрекейтить фигурные скобки в данном контексте и оставить только квадратные. А вы используете фигурные скобки?
  • video Подкаст PHP Internals News Episode 2: PHP Compiler and FFI [17] — Anthony Ferrara в гостях у Derick Rethans.
  • Объявлены релиз-менеджеры PHP 7.4 [18] — Ими стали Peter Kokot [19] and Derick Rethans [20].

PHP-Дайджест № 152 (11 – 25 марта 2019) - 5 Инструменты

  • API Platform 2.4 [21] — Под капотом MongoDB, Elasticsearch, Mercure, OpenAPI v3, CQRS, HTTP/2 Push.
  • Roave/no-leaks [22] — Плагин для PHPUnit, который поможет обнаружить утечки памяти в приложении и тестах.
  • Roave/Dont [23] — Трейты, которые блокируют использование некоторых магических методов.
  • bobthecow/psysh [24] — Отличная реализация интерактивного режима для PHP. В поддержку свежий пост о том, ruчто такое REPL и Exploratory development [25].
  • spatie/async [26] — Обертка над PCNTL для простого выполнения параллельных задач. В качестве альтернативы есть еще ackintosh/snidel [27].
  • King2500/doctrine-phpstorm-meta [28] — Пакет улучшает автодополнение для Doctrine в PhpStorm 2019.1 благодаря .phpstorm.meta.php [29].
  • biganfa/php2curl [30] — Библиотека позволяет быстро трансформировать текущий контекст ($_REQUEST, $_SERVER, и т.д.) в строку запроса cURL. Прислал catanfa [31].

PHP-Дайджест № 152 (11 – 25 марта 2019) - 7 Symfony

PHP-Дайджест № 152 (11 – 25 марта 2019) - 10 Laravel

PHP-Дайджест № 152 (11 – 25 марта 2019) - 13 Yii

Безопасность

Async PHP

CMS

PHP-Дайджест № 152 (11 – 25 марта 2019) - 18 Материалы для обучения

PHP-Дайджест № 152 (11 – 25 марта 2019) - 25 Занимательное

  • ircmaxell/php-compiler [66] — Давно заброшенная идея компилятора для PHP от Anthony Ferrara получила реинкарнацию благодаря FFI в PHP 7.4. Теоретически, компилятор способен генерировать нативный машинный код и выдавать бинарник исполняемый без виртуальной машины PHP. На практике, это пока только концепт, который поддерживает всего ничего, но идея интересная.

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

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

Больше новостей и комментариев в Telegram-канале PHP Digest [70].

Прислать ссылку [71]
Поиск ссылок по всем дайджестам [72]
Предыдущий выпуск: PHP-Дайджест № 151 [73]

Автор: Роман Пронский

Источник [74]


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/php-2/312572

Ссылки в тексте:

[1] PHP Russia 2019 – Москва, 17 мая: https://phprussia.ru/2019

[2] spiral/roadrunner: https://github.com/spiral/roadrunner

[3] PHP-ML: https://github.com/php-ai/php-ml

[4] другие: https://phprussia.ru/2019/abstracts

[5] PHP fwdays'19 – Киев, 1 июня: https://fwdays.com/en/event/php-fwdays-2019

[6] Enrico Zimuel присоединился к команде Elastic: https://www.zimuel.it/blog/a_new_journey_with_PHP_again

[7] @dmitrybalabka: https://twitter.com/dmitrybalabka

[8] заявили об уходе: https://habr.com/ru/post/426809/

[9] [RFC] New custom object serialization mechanism: https://wiki.php.net/rfc/custom_object_serialization

[10] [RFC] JIT: https://wiki.php.net/rfc/jit

[11] пост: https://beberlei.de/2019/03/23/playing_with_the_php_jit.html

[12] clue/php-redis-server: https://github.com/clue/php-redis-server

[13] [RFC] Arrow Functions 2.0: https://wiki.php.net/rfc/arrow_functions_v2

[14] [RFC] Generator comprehensions: https://wiki.php.net/rfc/comprehensions

[15] Концепт: https://github.com/php/php-src/compare/master...sgolemon:list.comp

[16] [RFC] Deprecate curly braces array access: https://wiki.php.net/rfc/deprecate_curly_braces_array_access

[17] Подкаст PHP Internals News Episode 2: PHP Compiler and FFI: https://derickrethans.nl/phpinternalsnews-02.html

[18] Объявлены релиз-менеджеры PHP 7.4: https://externals.io/message/104581#104784

[19] Peter Kokot: https://github.com/petk

[20] Derick Rethans: https://twitter.com/derickr

[21] API Platform 2.4: https://dunglas.fr/2019/01/api-platform-2-4/

[22] Roave/no-leaks: https://github.com/Roave/no-leaks

[23] Roave/Dont: https://github.com/Roave/Dont

[24] bobthecow/psysh: https://github.com/bobthecow/psysh

[25] что такое REPL и Exploratory development: https://ru.hexlet.io/blog/posts/php-psysh-ili-chto-takoe-repl-exploratory-development

[26] spatie/async: https://github.com/spatie/async

[27] ackintosh/snidel: https://github.com/ackintosh/snidel

[28] King2500/doctrine-phpstorm-meta: https://github.com/King2500/doctrine-phpstorm-meta

[29] .phpstorm.meta.php: https://blog.jetbrains.com/phpstorm/2019/02/new-phpstorm-meta-php-features/

[30] biganfa/php2curl: https://github.com/biganfa/php2curl

[31] catanfa: https://habr.com/ru/users/catanfa/

[32] Философия RAD и Enterprise фреймворков: https://elisdn.ru/blog/130/enterprise-frameworks

[33] Неделя Symfony #638 (18-24 марта 2019): https://symfony.com/blog/a-week-of-symfony-638-18-24-march-2019

[34] spatie/laravel-personal-data-export: https://github.com/spatie/laravel-personal-data-export

[35] aldemeery/sieve: https://github.com/aldemeery/sieve

[36] Деплоим Laravel в Kubernetes: https://learnk8s.io/blog/kubernetes-deploy-laravel-the-easy-way/

[37] Об использовании представлений (view) MySQL с Eloquent: https://stitcher.io/blog/eloquent-mysql-views

[38] Миграция легаси веб-приложений на Laravel: https://www.phparch.com/2019/03/migrating-legacy-web-applications-to-laravel/

[39] Пожалуйста, прекращайте говорить про шаблон Репозиторий с Eloquent: https://habr.com/ru/post/444688/

[40] cebe/yii2-openapi: https://github.com/cebe/yii2-openapi

[41] Интервью на Hexlet с Александром Макаровым: https://www.youtube.com/watch?v=uHHfnZDRHs8

[42] CSRF уязвимость в WordPress 5.1: https://blog.ripstech.com/2019/wordpress-csrf-to-rce/

[43] WordPress 5.1.1: https://wordpress.org/news/2019/03/wordpress-5-1-1-security-and-maintenance-release/

[44] Unique Rule SQL Injection Warning: https://blog.laravel.com/unique-rule-sql-injection-warning

[45] yet another phar deserialization in TCPDF: https://polict.net/blog/CVE-2018-17057

[46] tecnickcom/tcpdf: https://github.com/tecnickcom/tcpdf

[47] clue/reactphp-redis v2.3.0: https://github.com/clue/reactphp-redis

[48] блогпосте: https://www.lueck.tv/2019/introducing-reactphp-redis

[49] xtrime-ru/TelegramRSS: https://github.com/xtrime-ru/TelegramRSS

[50] микросервисов на PHP и Swoole: https://habr.com/ru/post/354000/

[51] Используем прокси: https://www.youtube.com/watch?v=BYU_dHKBqdA

[52] повысили минимальную версию до 5.6: https://core.trac.wordpress.org/changeset/44950

[53] обещали повысить требования: https://make.wordpress.org/core/2018/12/08/updating-the-minimum-php-version/

[54] официальной статистике: https://wordpress.org/about/stats/

[55] W3Techs: https://w3techs.com/technologies/history_overview/content_management/all

[56] В WordPress 5.2 будет добавлена: https://core.trac.wordpress.org/ticket/39309

[57] sodium_compat: https://github.com/paragonie/sodium_compat

[58] В Drupal из коробки добавлена поддержка: https://dri.es/jsonapi-lands-in-drupal-core

[59] JSON:API: https://jsonapi.org/

[60] Использование архитектуры серверлесс на PHP: https://mnapoli.fr/serverless-case-study-prettyci/

[61] Как мы сделали PHP 7 в два раза быстрее PHP 5: https://habr.com/ru/company/oleg-bunin/blog/444508/

[62] Debug Oriented Programming или печаль в глазах Интегратора: https://habr.com/ru/post/442892/

[63] Монолит для сотен версий клиентов: как мы пишем и поддерживаем тесты: https://habr.com/ru/company/badoo/blog/443768/

[64] Видео с Badoo PHP Meetup #2: о тестах и качестве кода: https://habr.com/ru/company/badoo/blog/444658/

[65] Видеозаписи докладов с PHP UK 2019: https://www.youtube.com/playlist?list=PL_aPVo2HeGF9Hf1dr6lI7f6jJ48zqcz_f

[66] ircmaxell/php-compiler: https://github.com/ircmaxell/php-compiler

[67] личку: https://habrahabr.ru/conversations/pronskiy/

[68] почту: mailto:roman@pronskiy.com

[69] твиттер: https://twitter.com/pronskiy

[70] PHP Digest: https://t.me/phpdigest

[71] Прислать ссылку: https://bit.ly/php-digest-add-link

[72] Поиск ссылок по всем дайджестам: https://pronskiy.com/php-digest/

[73] Предыдущий выпуск: PHP-Дайджест № 151: https://habr.com/ru/post/443220/

[74] Источник: https://habr.com/ru/post/445140/?utm_source=habrahabr&utm_medium=rss&utm_campaign=445140