PHP Digest
8.51K subscribers
60 photos
3 videos
288 links
PHP Дайджест

Новости, материалы и инструменты из мира PHP — раз в месяц.

Вопросы, замечания, предложения: @pronskiy
Download Telegram
Новые возможности в PHP 7.4

https://stitcher.io/blog/new-in-php-74

Несмотря на опасения по поводу безопасности и стабильности, голосование по FFI прошло успешно и предложение принято. А значит FFI будет добавлен в следующем мажорном релизе. Это даст возможность использовать функции и структуры данных из C-модулей напрямую. В качестве примера можно посмотреть на PHP-биндинг для TensorFlow https://github.com/dstogov/php-tensorflow.

К слову, PHP 7.4 обещает быть весьма интересным, потому что уже сейчас известно, что в нем будут следующие фичи:

– Предзагрузка https://t.me/phpdigest/13
– FFI https://wiki.php.net/rfc/ffi
– Типизированные свойства https://wiki.php.net/rfc/typed_properties_v2
– Оператор присвоения с проверкой на null https://wiki.php.net/rfc/null_coalesce_equal_operator
– Более консистентные типы: разрешается "сужать" тип возвращаемого значения в наследниках, и "расширять" тип параметров https://wiki.php.net/rfc/covariant-returns-and-contravariant-parameters
Никита Попов присоединился к команде PhpStorm

https://blog.jetbrains.com/phpstorm/2019/01/nikita-popov-joins-phpstorm-team/

Никита хорошо известен в сообществе PHP как вкладом в ядро PHP, так и юзерленд библиотеками.
Например, библиотека FastRoute была написана после попыток ребят продвигать роутер в виде расширения. Никита показал, что PHP тут не самое узкое место. Иначе, кто знает, куда это могло зайти: "Однажды PHP-разработчики будут модифицировать ядро Linux для роутинга, вместо того, чтоб решать реалистичные задачи".
И хотя на сегодняшний день уже есть реализации получше, например в Symfony, тем не менее пост Никиты о роутинге и регулярных выражениях очень интересен.

Вы, возможно, слышали про PHP Parser– это буквально он и есть, парсер PHP на PHP. Прежде всего он интересен сам по себе, но еще более интересны инструменты, которые реализованы с помощью него. Например, PHPStan, Psalm, BetterReflection, Infection, SuperClosure, and PHP-DI, и многие другие.

В PHP 5.5 Никита реализовал генераторы. Рекомендую перевод его поста о корутинах в PHP и совместной многозадачности.

В PHP 5.6 реализовал две связанные возможности: variadic functions и argument unpacking. С помощью них можно легко объявлять и использовать функции с переменным числом параметров.

Дальше в PHP 7 Никита ввел AST в качестве внутренней структуры представления. А также он работал непосредственно над самим PHP 7 в виде проекта NG вместе с Дмитрием Стоговым и Xinchen Hui.

PHP стал более консистентным благодаря вкладам Никиты: были введен единый синтаксис переменных и наконец-то нормальные исключения вместо ошибок.

Ну и, конечно же, нельзя не упомянуть типизированные свойства для PHP 7.4, где Никита выступает одним из соавторов.

В JetBrains фокус у Никиты останется тем же – ядро PHP и его экосистема. Желаю ему вдохновения и успехов!
PHP-Дайджест № 147

https://habr.com/post/435956/

Если еще не успели, посмотрите свежий дайджест. В выпуске: обновления всех веток PHP, Deployer 6.4, doctrine/migrations 2.0, Psalm 3 и другие релизы, Никита Попов в JetBrains, новости PHP Internals, порция полезных инструментов, видео, и многое другое!
https://5minphp.ru/episode46/

Короткую аудиоверсию дайджеста уже по хорошей традиции можно послушать в подкасте Пятиминутка PHP, за что спасибо Петру Мязину https://twitter.com/5minphp. Первая половина подкаста посвящена новости о Никите, так что если читали заметку https://t.me/phpdigest/36, то смело проматывайте 2 минуты.

А тем временем лидер Laravel Тейлор запустил свой подкаст формата пятиминутки о новостях фреймворка:
https://blog.laravel.com/laravel-snippet-1
Типизированные переменные

С помощью класса и ссылки на свойство в PHP 7.4 можно имитировать типизированные переменные.

На основе этой идеи уже даже реализовали библиотеку https://github.com/azjezz/typed
Проблема курицы и яйца решена с помощью PHP!

https://twitter.com/EvanDotPro/status/1086319484439150592
PhpStorm 2019.1 EAP

https://blog.jetbrains.com/phpstorm/2019/01/phpstorm-2019-1-early-access-program-is-open/

Стартовала программа раннего доступа первого мажорного обновления PhpStorm в этом году.
В релизе планируется масса вкусностей! Из того, что можно пощупать уже сейчас:
– Отладка шаблонов Twig
– Новый режим Focus, в котором подсвечивается только текущий метод/функция 🔥
– Возможность сортировки импортов (use выражений)
– Поддержка phpcbf для исправления ошибок стиля
Конференции по PHP

Многие ругают PHP за токсичное сообщество. Иногда с этим трудно не согласиться, особенно читая комментарии к постам типа "PHP умер / умирает / создан, чтобы умирать". Зато на PHP-конференциях всегда отличная атмосфера и собираются крутые люди, c которыми интересно обсудить проблемы и услышать об опыте. В этом году очень хочу попасть на Dutch PHP Conf, Laracon и SymfonyCon. И конечно, не пропущу локальные харьковские ThinkPHP и Kharkiv.js.

Киев, 1 июня, PHP fwdays’19
https://fwdays.com/en/event/php-fwdays-2019
А вот отдельно хочу написать про PHP fwdays! Езжу на эту конференцию вот уже 5 лет. И в этом году обязательно поеду снова! Программа еще не объявлена, и это отличная возможность купить билеты по лучшей цене. Сомнений нет, будут толковые докладчики и интересный народ, ну и по традиции, душевная афтерпати.
Для читателей дайджеста есть промокод со скидкой 15%: PHP-digest-fwdays


Но это еще не все!

17 мая в Москве пройдет первая конференция PHP Russia

И это особенное мероприятие по нескольким причинам. Во-первых, специализированной PHP-конференции в России не было уже давно. Во-вторых, в программном комитете собралась классная команда https://rmcreative.ru/blog/post/php-russia-2019--nachalo 😉. И в-третьих, конференция пройдет при поддержке Олега Бунина, а это опыт РИТ++, HighLoad++ и множества других мероприятий.

Скоро будет больше информации, а пока следите за новостями в канале: @PHPRussiaConfChannel
И принимайте участие в обсуждениях в официальном чате конференции: @PHPRussiaConfTalks
PHP-Дайджест № 148

https://habr.com/ru/post/437752/

Взломан репозиторий PEAR, о будущем Xdebug, конференция PHP Russia 2019, свежие релизы, RFC предложения из PHP Internals, порция полезных инструментов, и многое другое!
JIT в PHP!

https://wiki.php.net/rfc/jit

Попытки реализовать JIT были предприняты еще во времена PHP 6. И вот наконец-то усилиями Дмитрия Стогова эта возможность стала реальностью! Причем предлагается включить ее уже в PHP 7.4, но отключенной по умолчанию. Это отличная идея, так как даст возможность пощупать на реальных приложениях раньше. PHP JIT реализован как независимая часть OPcache, и может быть включен/выключен даже в рантайме.
PHP-Дайджест № 149
(28 января – 11 февраля 2019)

PHPUnit 8 и другие релизы, PSR-14 и PSR-12 в стадии ревью, JIT для PHP, стартовала работа над PHP 8, пачка свежих RFC из PHP Internals, порция полезных инструментов, и многое другое!

https://habr.com/post/439780/
self и parent в качестве тайпхинтов

Еще одна старая фишка PHP, о которой вы могли не знать. В качестве typehint можно использовать как self так и parent.

https://madewithlove.be/self-and-parent-type-hints/
https://githistory.xyz/

Забавный инструмент для просмотра истории любого файла на GitHub.
Открываем файл, заменяем домен в строке браузера на github.githistory.xyz и дальше, листая стрелками влево/вправо, можно смотреть как менялся файл.
Хотите узнать, почему некоторые RFC так и остаются непринятыми и без реализации в PHP?
Например, дженерики, короткие лямбды, перегрузка методов, аннотации и т.д.
По ссылке отличный обзор этих и других предложений с объяснением трудностей и прогнозом дальнейшей судьбы.

https://github.com/danack/RfcCodex
В последнее время PHP становится лучше с каждым принятым RFC, ну а PHP 7.4 и 8 так вообще выглядят весьма многообещающе. Хотите узнать, как все начиналось в 1995?
Тогда вот Docker-образ с PHP 1 https://github.com/jaem3l/php1-docker-image
В PhpStorm 2019.1 EAP есть одна интересная экспериментальная фича. С помощью файла .phpstorm.meta.php можно подсказывать IDE, какие аргументы ожидаются в функции или какие значения она может возвращать.
Например, функция ожидает в качестве аргумента какую-то константу. Формально тип этой константы, допустим integer, но в действительности набор возможных констант нам известен. Например, json_encode($data, /* вот тут битовая маска из констант JSON_* */)
Но еще у нас может быть функция, которая возвращает константу, как например json_last_error().
В PhpStorm 2019.1 EAP автодополнение для этих случаев уже работает. Но более того, такое автодополнение можно сделать у себя в любом проекте/библиотеке/фреймворке просто добавив специальный файл .phpstorm.meta.php в репозиторий. И таких файлов может быть сколько угодно, PhpStorm сам найдет и смержит их.

https://blog.jetbrains.com/phpstorm/2019/02/new-phpstorm-meta-php-features/
И в качестве примера автодополнение для symfony/console: