Size: a a a

2019 February 15
PHP Digest
источник
PHP Digest
источник
PHP Digest
https://githistory.xyz/

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

https://github.com/danack/RfcCodex
источник
2019 February 21
PHP Digest
В последнее время PHP становится  лучше с каждым принятым RFC, ну а PHP 7.4 и 8 так вообще выглядят весьма многообещающе.  Хотите узнать, как все начиналось в 1995?
Тогда вот Docker-образ с PHP 1 https://github.com/jaem3l/php1-docker-image
источник
2019 February 22
PHP Digest
В 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/
источник
PHP Digest
И в качестве примера автодополнение для symfony/console:
источник
PHP Digest
источник
2019 February 25
PHP Digest
PHP-Дайджест № 150
(11 – 25 февраля 2019)

Изменены правила голосования за RFC в PHP Internals, стартовал прием заявок на доклады для PHP Russia 2019, новое расширение для реализации параллельного исполнения кода, свежие материалы для обучения, видео, порция полезных инструментов, и многое другое!

https://habr.com/ru/post/441584/
источник
2019 March 05
PHP Digest
Читать разборы ошибок безопасности всегда очень интересно, потому что выглядят они как настоящий детектив! Вот один из таких разборов, где в конечном счете все свелось к досадной опечатке.
Это еще раз показывает насколько важны тайп хинты, статический анализ, и нормальный редактор ;-)

https://medium.com/@DanielC7/remote-code-execution-gaining-domain-admin-privileges-due-to-a-typo-dbf8773df767
источник
2019 March 11
PHP Digest
PHP-Дайджест № 151
(25 февраля – 11 марта 2019)

Обновления PHP, Laravel 5.8, Xdebug 2.7 и другие релизы, 3 свежих RFC, 2 принятых, и концепт из PHP Internals, порция полезных инструментов, и многое другое!

https://habr.com/ru/post/443220/
источник
2019 March 13
PHP Digest
Короткие лямбды 2.0

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

Никита Попов продолжает бить по проблемным местам PHP! В своем свежем RFC он замахнулся на стрелочные функции, они же короткие лямбды.  У этой идеи в PHP сложная история, было как минимум две попытки (1, 2) их реализовать и обе провалились. В основном упираясь в синтаксис.
Уже рассматривались варианты:
$x ~> $x * 2
function($x) => $x + $y
^($x) => $x + $y

Собственно половина документа, который опубликовал Никита, посвящена выбору синтаксиса.
Предложен следующий вариант:

  fn($x, $y) => $x * $y

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

$y = 1;
$fn1 = fn($x) => $x + $y;

А если надо по ссылке, то придется либо явно перечислять переменные по ссылке, либо использовать переключатель:

$fn = fn() use(&) {
   // ...
}

Также можно будет объявлять и методы в виде короткого синтаксиса:

class Test {
   private $foo;

   fn getFoo() => $this->foo;
}

Надеюсь, на этот раз предложение преодолеет порог голосования и будет принято.
источник
2019 March 25
PHP Digest
PHP-Дайджест № 152
(11 – 25 марта 2019)

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

https://habr.com/ru/post/445140/
источник
2019 March 26
PHP Digest
Принят PSR-14 Event Dispatcher

https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-14-event-dispatcher.md

Новый стандарт регламентирует работу с событиями в приложении. И это тот самый стандарт, из-за которого разгорелись споры и Fabien Potencier покинул PHP-FIG. Правда, после этого стандарт был заметно доработан.

В итоге получился довольно простой, понятный, и не очень строгий стандарт. Он определяет всего 3 интерфейса: EventDispatcherInterface с единственным методом dispatch(object $event), при этом событие – любой объект, разве что если вы хотите, чтоб событие останавливало обработку других событий, тогда оно должно реализовать StoppableEventInterface; ну и третий интерфейс – это ListenerProviderInterface реализация которого должна уметь предоставлять список обработчиков для конкретного события через метод getListenersForEvent(object $event) : iterable. Ну а обработчиком может быть совершенно любой Сallable.

Также стандарт перечисляет характеристики, которым должны соответствовать все элементы и рекомендации по реализации.

Уже есть пара реализаций:
https://github.com/crell/tukio
https://github.com/phly/phly-event-dispatcher

И интересная идея плагина для Composer:
https://github.com/bmack/kart-composer-plugin
источник
2019 March 29
PHP Digest
Деструктурирующее присваивание с нечисловыми ключами
 
Эта возможность доступна с PHP 7.1 и очень удобна, когда надо выбрать только некоторые элементы из массива.

https://twitter.com/brendt_gd/status/1111243431781822464
источник
PHP Digest
источник
2019 April 05
PHP Digest
Fizz-Buzz в 52 символа?

https://code-golf.io/

На этом сайте можно посоревноваться в реализации самого короткого по числу символов решения простых задач. Например, попробуйте написать простейшую Fizz-Buzz задачку на PHP https://code-golf.io/fizz-buzz#php в 52 символа! А именно это и есть текущий рекорд.
источник
2019 April 08
PHP Digest
PHP-Дайджест № 153
(25 марта – 8 апреля 2019)

https://habr.com/p/447130/

Принят PSR-14 Event Dispatcher, JIT в PHP 8, тройка RFC-предложений из PHP Internals, порция полезных инструментов, и многое другое!
источник
2019 April 11
PHP Digest
ORM для долгоживущих приложений

github.com/cycle/orm

Новая библиотека от автора RoadRunner Антона Титова. Аналог Doctrine для использования в демонизированных приложениях на PHP. Без утечек памяти и со сбрасываемым стейтом.
– Поддерживаются MySQL, MariaDB, PostgresSQL, SQLServer, SQLite;
– Совместима с Doctrine Collections и Zend Hydrator;
– Можно использовать в стиле ActiveRecord.

Сильная вещь, ждем документацию!
источник
2019 April 17
PHP Digest
Конец Zend Framework, начало Laminas project

https://getlaminas.org/

После длительного молчания наконец-то пролился свет на судьбу фреймворка.
Zend Framework переходит под крыло Linux Foundation https://www.linuxfoundation.org/blog/2019/04/lf-forms-laminas-project/ и меняет своё название на Laminas, чтобы отвязаться от коммерческого бренда Zend.

Фреймворк разрабатывался компанией Zend, затем вместе с самой компанией был поглощён Rogue Wave Software. В октябре прошлого года Зеев Сураски объявил о том, что вся команда Zend покинет RWS https://habr.com/ru/post/426809/. Пока о дальнейших планах рассказал только Enrico Zimuel, который перешёл в Elastic https://www.zimuel.it/blog/a_new_journey_with_PHP_again. Ждём новостей от Zeev Suraski, Adam Culp, Matthew Weier O'Phinney, и, конечно, Дмитрия Стогова.

Очень надеюсь это вдохнёт новую жизнь во фреймворк, и конкуренция с другими инструментами благоприятно воздействует на всю экосистему.
источник