Полезное обновление proc_open() в PHP 7.4
https://twitter.com/nikita_ppv/status/1145684078114549760
В PHP 7.4 можно будет запускать внешние программы без необходимости проходить через шелл:
В качестве бонуса теперь сигналы будут передаваться напрямую открытому процессу, а не шеллу.
https://twitter.com/nikita_ppv/status/1145684078114549760
В PHP 7.4 можно будет запускать внешние программы без необходимости проходить через шелл:
proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes);То есть вместо строки можно будет передавать массив аргументов. Это значит, что не надо думать об экранировании. На Linux аргументы передаются сразу в execvp. А на Windows формируется специальная экранированная строка по правилам, описанным в https://docs.microsoft.com/en-us/cpp/cpp/parsing-cpp-command-line-arguments.
В качестве бонуса теперь сигналы будут передаваться напрямую открытому процессу, а не шеллу.
Twitter
Nikita Popov
PHP 7.4 will support executing programs without going through a shell: proc_open(['php', '-r', 'echo "Hello World\n";'], $descriptors, $pipes); This means that you don't have to take care of shell argument escaping, and that signals will be correctly delivered…
В PHP 7 нет тайпхинтов
Начиная с PHP 7, то что мы называем тайпхинтами (type hints) в действительности называется объявлениями типов (type declarations).
https://twitter.com/localheinz/status/1144902570294595584
Начиная с PHP 7, то что мы называем тайпхинтами (type hints) в действительности называется объявлениями типов (type declarations).
https://twitter.com/localheinz/status/1144902570294595584
PHP-Дайджест № 160
(1 – 15 июля 2019)
https://habr.com/p/460022/
PHP 7.4.0 alpha 3, ReactPHP 1.0 LTS, порция полезных инструментов, видеозаписи с конференций, подкасты и многое другое!
(1 – 15 июля 2019)
https://habr.com/p/460022/
PHP 7.4.0 alpha 3, ReactPHP 1.0 LTS, порция полезных инструментов, видеозаписи с конференций, подкасты и многое другое!
Возобновляем традицию записывать короткую аудиверсию дайджеста в подкасте Пятиминутка PHP. Спасибо Петру Мязину!
https://soundcloud.com/5minphp/episode56
https://soundcloud.com/5minphp/episode56
SoundCloud
PHP-Дайджест № 160 (1 – 15 июля 2019)
PHP-Дайджест № 160 (1 – 15 июля 2019)
В этом выпуске автор знаменитых PHP-Дайджестов Роман Пронский (https://twitter.com/pronskiy) делится подборкой свежих новостей из мира PHP - краткий обзор некото
В этом выпуске автор знаменитых PHP-Дайджестов Роман Пронский (https://twitter.com/pronskiy) делится подборкой свежих новостей из мира PHP - краткий обзор некото
Мёртвый код
https://blog.krakjoe.ninja/2019/07/trimming-phat.html
В PhpStorm и других инструментах есть инспекция для поиска "мёртвого кода" то есть, не просто недостижимого типа:
С другой стороны, если вся функциональность вашего приложения покрыта тестами, то теоретически найти "мёртвые" участки можно из покрытия. Но на практике так бываетредко никогда.
Joe Watkins, core-контрибьютор PHP, а также автор pthreads, parallel, и pcov, разрабатывает новое расширение https://github.com/krakjoe/tombs, идея которого простая: подключаете его на продакшене, ждёте день/неделю/месяц, а потом смотрите статистику и видите, какие функции/методы ни разу не выполнялись — с большой вероятностью и в следующий год они не будут запущены, а значит можно их удалять не жалея.
https://blog.krakjoe.ninja/2019/07/trimming-phat.html
В PhpStorm и других инструментах есть инспекция для поиска "мёртвого кода" то есть, не просто недостижимого типа:
function foo() {
return;
echo "I'm dead";
};
а такого, который на вид вполне норм, но при этом нигде не вызывается. Проблема в том, что такие инструменты вычисляют неиспользуемые куски статически, и из-за динамической природы PHP все возможные варианты просчитать довольно сложно.С другой стороны, если вся функциональность вашего приложения покрыта тестами, то теоретически найти "мёртвые" участки можно из покрытия. Но на практике так бывает
Joe Watkins, core-контрибьютор PHP, а также автор pthreads, parallel, и pcov, разрабатывает новое расширение https://github.com/krakjoe/tombs, идея которого простая: подключаете его на продакшене, ждёте день/неделю/месяц, а потом смотрите статистику и видите, какие функции/методы ни разу не выполнялись — с большой вероятностью и в следующий год они не будут запущены, а значит можно их удалять не жалея.
blog.krakjoe.ninja
Trimming the Phat
Fig 1. A very fancy Tomb We all think we know how dead code elimination works, we can just reference code coverage, or run static anal...
Vapor – serverless для Laravel
https://vapor.laravel.com/
Каждый год на Laracon US Тейлор представляет какой-то новый продукт в экосистеме Laravel.
На этот раз им стал Vapor – платный сервис для быстрого поднятия serverless PHP-приложений на инфраструктуре AWS Lambda.
https://mattstauffer.com/blog/introducing-laravel-vapor/ – отличный конспект доклада с основными моментами.
https://www.pscp.tv/freekmurze/1nAKEzLPpNgGL?t=15m16s – трансляция в перископе, профессиональную запись обещают в течение суток.
https://vapor.laravel.com/
Каждый год на Laracon US Тейлор представляет какой-то новый продукт в экосистеме Laravel.
На этот раз им стал Vapor – платный сервис для быстрого поднятия serverless PHP-приложений на инфраструктуре AWS Lambda.
https://mattstauffer.com/blog/introducing-laravel-vapor/ – отличный конспект доклада с основными моментами.
https://www.pscp.tv/freekmurze/1nAKEzLPpNgGL?t=15m16s – трансляция в перископе, профессиональную запись обещают в течение суток.
Вышел PhpStorm 2019.2
https://habr.com/ru/company/JetBrains/blog/461449/
Вчера зарелизили второй мажорный выпуск PhpStorm в этом году. Возможно, вы уже успели обновиться и посмотреть обзор новых фич. Но если вдруг нет, то всё самое важное можно глянуть в коротком видеоролике (англ): https://www.youtube.com/watch?v=oA7Xmc_FwK0
А подробный разбор всех новых возможностей смотрите в хабрапосте.
Из наиболее заметного:
• Поддержка типизированных свойств PHP 7.4, включая быстрые фиксы для миграции
• Поиск дублирующегося кода на лету
• Подсветка и проверка регулярок в PHP
• EditorConfig работает из коробки и в нём можно указывать PhpStorm-опции
• Поддержка Shell-скриптов с инспекциями, быстрыми фиксами, встроенной документацией
• Подсветка синтаксиса для 20+ языков
https://habr.com/ru/company/JetBrains/blog/461449/
Вчера зарелизили второй мажорный выпуск PhpStorm в этом году. Возможно, вы уже успели обновиться и посмотреть обзор новых фич. Но если вдруг нет, то всё самое важное можно глянуть в коротком видеоролике (англ): https://www.youtube.com/watch?v=oA7Xmc_FwK0
А подробный разбор всех новых возможностей смотрите в хабрапосте.
Из наиболее заметного:
• Поддержка типизированных свойств PHP 7.4, включая быстрые фиксы для миграции
• Поиск дублирующегося кода на лету
• Подсветка и проверка регулярок в PHP
• EditorConfig работает из коробки и в нём можно указывать PhpStorm-опции
• Поддержка Shell-скриптов с инспекциями, быстрыми фиксами, встроенной документацией
• Подсветка синтаксиса для 20+ языков
Хабр
PhpStorm 2019.2: Типизированные свойства PHP 7.4, поиск дубликатов, EditorConfig, Shell-скрипты и многое другое
Всем привет! Мы рады представить вам второй мажорный релиз PhpStorm в этом году! Обзор релиза можно посмотреть на странице “What’s new”. А под катом подробный...
PHP-Дайджест № 161
(15 – 29 июля 2019)
https://habr.com/p/461669/
PHP 7.4.0 beta 1, PhpStorm 2019.2, PSR-12, обзор RFC предложений из PHP Internals, новости с Laracon US, подкасты, порция полезных инструментов, и многое другое.
(15 – 29 июля 2019)
https://habr.com/p/461669/
PHP 7.4.0 beta 1, PhpStorm 2019.2, PSR-12, обзор RFC предложений из PHP Internals, новости с Laracon US, подкасты, порция полезных инструментов, и многое другое.
Обычно в подкасте выходит сокращённая версия дайджеста с основными моментами. На этот раз она скорее расширенная: подробнее рассмотрены RFC, а также Symfony Cloud и Laravel Vapor.
https://soundcloud.com/5minphp/episode58
https://soundcloud.com/5minphp/episode58
SoundCloud
29 июля 2019)
В этом выпуске автор знаменитых PHP-Дайджестов Роман Пронский (https://twitter.com/pronskiy) делится подборкой свежих новостей из мира PHP - последние RFC успевшие попасть в PHP 7.4 перед заморозкой,
Пробельные символы в именах функций
PSR-1 определяет, что имена методов должны быть объявлены в camelCase. А вот что PSR-стандарты никак не регламентируют, это какие символы можно использовать в именах. Обычно для именования используются ASCII-символы, но и вот такой код будет вполне соответствовать PSR-1,2,12 (хотя PHP_CоdeSniffer его и не пропустит):
https://github.com/Stichoza/phemoji
https://twitter.com/pgl/status/1155828747481825281
На идее пробельного символа нулевой длины даже сделана мини-библиотека, которая имитирует синтаксис структуры Tuple из Python https://github.com/p810/tuple/
https://mnapoli.fr/using-non-breakable-spaces-in-test-method-names/
PSR-1 определяет, что имена методов должны быть объявлены в camelCase. А вот что PSR-стандарты никак не регламентируют, это какие символы можно использовать в именах. Обычно для именования используются ASCII-символы, но и вот такой код будет вполне соответствовать PSR-1,2,12 (хотя PHP_CоdeSniffer его и не пропустит):
function имяФункции()А PHP позволяет использовать любые символы, хоть кириллицу, хоть emoji:
{
echo 'Привет, мир!';
}
имяФункции();
https://github.com/Stichoza/phemoji
📅('Y-m-d', ⏰() + 🎰(1000, 2000));
// date('Y-m-d', time() + rand(1000, 2000));
Или можно пробельные символы:function hello World()Или даже пробел нулевой длины:
{
echo 'Hello world!';
}
hello World();
https://twitter.com/pgl/status/1155828747481825281
function ()Копировать отсюда: https://gist.github.com/pronskiy/47adea5952b7af1574c673403b054f28
{
echo 'Zero-width space function name 🤯';
}
();
На идее пробельного символа нулевой длины даже сделана мини-библиотека, которая имитирует синтаксис структуры Tuple из Python https://github.com/p810/tuple/
$tuple = ('hello', 'world');
var_dump($tuple); // => p810\Tuple\Tuple#3 (2) {...}
Шутки шутками, а вот что касается обычных пробелов, то есть старая интересная идея использовать их в именовании тестовых методов:https://mnapoli.fr/using-non-breakable-spaces-in-test-method-names/
public function test a user can add a product to a wishlist()По опыту автора, тогда объявление выглядит как естественное предложение и тест легче воспринимать и написать. Ну а поскольку вызывать их явно обычно не приходится, то особых неудобств это не должно доставлять.
{
// ...
}
PHP-Дайджест № 162
(1 – 12 августа 2019)
https://habr.com/p/463279/
О будущем PHP: P++ или PHP2020, принят PSR-12, PHP 7.4 beta 2, Slim 4, и другие релизы, порция полезных инструментов, и многое другое!
(1 – 12 августа 2019)
https://habr.com/p/463279/
О будущем PHP: P++ или PHP2020, принят PSR-12, PHP 7.4 beta 2, Slim 4, и другие релизы, порция полезных инструментов, и многое другое!
Сегодня в эфире сразу два подкаста
Во-первых, это выпуск Пятиминутки PHP по следам PHP-Дайджеста, в котором я подробнее рассказываю о том, что происходило в PHP Internals за последнее время и о радикальном предложении переписать PHP без оглядки на обратную совместимость, под кодовым названием P++.
https://soundcloud.com/5minphp/episode61
А во-вторых, это совместный выпуск SDCast + Пятиминутка PHP, где Костя Буркалев и Пётр Мязин общаются с разработчиками из команды PhpStorm Кириллом Смеловым и Максимом Колмаковым и обсуждают, как устроена разработка, команда, что есть нового!
https://sdcast.ksdaemon.ru/2019/08/sdcast-107/
Во-первых, это выпуск Пятиминутки PHP по следам PHP-Дайджеста, в котором я подробнее рассказываю о том, что происходило в PHP Internals за последнее время и о радикальном предложении переписать PHP без оглядки на обратную совместимость, под кодовым названием P++.
https://soundcloud.com/5minphp/episode61
А во-вторых, это совместный выпуск SDCast + Пятиминутка PHP, где Костя Буркалев и Пётр Мязин общаются с разработчиками из команды PhpStorm Кириллом Смеловым и Максимом Колмаковым и обсуждают, как устроена разработка, команда, что есть нового!
https://sdcast.ksdaemon.ru/2019/08/sdcast-107/
PHP-Дайджест № 163
(12 – 26 августа 2019)
https://habr.com/p/464971/
PHP 7.4.0 beta 4, о судьбе P++, видео, подкасты, анонсы митапов и конференций, порция полезных инструментов, и многое другое!
(12 – 26 августа 2019)
https://habr.com/p/464971/
PHP 7.4.0 beta 4, о судьбе P++, видео, подкасты, анонсы митапов и конференций, порция полезных инструментов, и многое другое!
В PHP 8 по умолчанию уровень ошибок будет установлен в
вместо текущего:
https://twitter.com/nikita_ppv/status/1168492040046415878
https://github.com/php/php-src/pull/4659/files
E_ALL вместо текущего:
E_ALL & ~E_NOTICE & ~E_STRICT & ~E_DEPRECATED.https://twitter.com/nikita_ppv/status/1168492040046415878
https://github.com/php/php-src/pull/4659/files
Twitter
Nikita Popov
error_reporting=E_ALL will be the default in PHP 8.
Union Types v2
https://github.com/nikic/php-rfcs/blob/union-types/rfcs/0000-union-types-v2.md
Никита Попов разразился ещё одним монументальным RFC.
Предлагается ввести объединённые типы – это значит, что переменная может принимать один из перечисленных типов. Де-факто объединённые типы давно используются в PHPDoc, но теперь они действительно будут проверяться самим интерпретатором.
Предлагаемый синтаксис
Также примечательно, что этот RFC в качестве эксперимента оформлен как пул-реквест https://github.com/php/php-rfcs/pull/1 в репозиторий php/php-rfcs. Если такой подход приживётся, то в дальнейшем обсуждения RFC будут проходить на Гитхабе. Финальное голосование всё равно будет проходить на wiki.php.net.
https://github.com/nikic/php-rfcs/blob/union-types/rfcs/0000-union-types-v2.md
Никита Попов разразился ещё одним монументальным RFC.
Предлагается ввести объединённые типы – это значит, что переменная может принимать один из перечисленных типов. Де-факто объединённые типы давно используются в PHPDoc, но теперь они действительно будут проверяться самим интерпретатором.
Предлагаемый синтаксис
T1|T2|... может быть использованы везде, где типы можно указывать сейчас:class Number {
private int|float $number;
public function setNumber(int|float $number): void {
$this->number = $number;
}
public function getNumber(): int|float {
return $this->number;
}
}
______________________________________Также примечательно, что этот RFC в качестве эксперимента оформлен как пул-реквест https://github.com/php/php-rfcs/pull/1 в репозиторий php/php-rfcs. Если такой подход приживётся, то в дальнейшем обсуждения RFC будут проходить на Гитхабе. Финальное голосование всё равно будет проходить на wiki.php.net.
GitHub
php-rfcs/0000-union-types-v2.md at union-types · nikic/php-rfcs
Experimental repo for GitHub based RFC workflow. For now, please don't submit PRs. - php-rfcs/0000-union-types-v2.md at union-types · nikic/php-rfcs
PHP-Дайджест № 164
(27 августа – 9 сентября 2019)
https://habr.com/p/466671/
PHP 7.4.0 RC1, Laravel 6, Monolog 2 и другие релизы, Union Types, Object Initializer и прочие новости из PHP Internals, полезные инструменты, пачка подкастов и многое другое!
(27 августа – 9 сентября 2019)
https://habr.com/p/466671/
PHP 7.4.0 RC1, Laravel 6, Monolog 2 и другие релизы, Union Types, Object Initializer и прочие новости из PHP Internals, полезные инструменты, пачка подкастов и многое другое!
PhpStorm 2019.3 EAP
https://blog.jetbrains.com/phpstorm/2019/09/phpstorm-2019-3-early-access-program-is-now-open/
Пока я в отпуске, и новостей в канале не густо, но скоро вернусь с интересными сюрпризами.
А тем временем запустили программу раннего доступа для третьего мажорного релиза PhpStorm в этом году.
В этот раз фокус на качестве и производительности. Поэтому вся команда IntelliJ Platform, на которой базируется PhpStorm и другие IDE от JetBrains, занимается фиксами багов, проблем юзабилити и перформанса. В релиз ноутах можно увидеть много исправленных старых проблем. Правда, это значит, что новых фич будет меньше.
Из того, что можно пощупать уже сейчас:
– Поддержка всех фич PHP 7.4 (помимо типизированных свойств), с инспекциями и квик-фиксами
– Подсветка в PHPDoc
– Выбор интерпретатора для run-конфигураций
– Множество мелких улучшений для PHP
Отзывы можно писать мне @prnsk, в твиттер phpstorm (мы его читаем и отвечаем), или в блоге PhpStorm.
По традиции билды EAP можно использовать бесплатно.
https://blog.jetbrains.com/phpstorm/2019/09/phpstorm-2019-3-early-access-program-is-now-open/
Пока я в отпуске, и новостей в канале не густо, но скоро вернусь с интересными сюрпризами.
А тем временем запустили программу раннего доступа для третьего мажорного релиза PhpStorm в этом году.
В этот раз фокус на качестве и производительности. Поэтому вся команда IntelliJ Platform, на которой базируется PhpStorm и другие IDE от JetBrains, занимается фиксами багов, проблем юзабилити и перформанса. В релиз ноутах можно увидеть много исправленных старых проблем. Правда, это значит, что новых фич будет меньше.
Из того, что можно пощупать уже сейчас:
– Поддержка всех фич PHP 7.4 (помимо типизированных свойств), с инспекциями и квик-фиксами
– Подсветка в PHPDoc
– Выбор интерпретатора для run-конфигураций
– Множество мелких улучшений для PHP
Отзывы можно писать мне @prnsk, в твиттер phpstorm (мы его читаем и отвечаем), или в блоге PhpStorm.
По традиции билды EAP можно использовать бесплатно.
PHP-Дайджест № 165
PHP 7.4.0 RC3, поддержка Composer-зависимостей на GitHub, обновление стандартов PSR, RFC предложения из PHP Internals и о координации проекта PHP, порция полезных инструментов, подкасты, митапы, и многое другое!
https://habr.com/p/470373/
PHP 7.4.0 RC3, поддержка Composer-зависимостей на GitHub, обновление стандартов PSR, RFC предложения из PHP Internals и о координации проекта PHP, порция полезных инструментов, подкасты, митапы, и многое другое!
https://habr.com/p/470373/
Habr
PHP-Дайджест № 165 (23 сентября – 7 октября 2019)
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4.0 RC3, поддержка Composer-зависимостей на GitHub, обновление стандартов PSR, RFC предложения из PHP Internals и о координации...
PHP-Дайджест № 166
PHP 7.4 RC4 и другие релизы, новости из PHP Internals, порция полезных инструментов, стримы, видео с конференций, подкасты и многое другое!
https://habr.com/p/472306/
PHP 7.4 RC4 и другие релизы, новости из PHP Internals, порция полезных инструментов, стримы, видео с конференций, подкасты и многое другое!
https://habr.com/p/472306/
Habr
PHP-Дайджест № 166 (7 – 21 октября 2019)
Свежая подборка со ссылками на новости и материалы. В выпуске: PHP 7.4 RC4 и другие релизы, новости из PHP Internals, порция полезных инструментов, стримы, видео с конференций, подкасты и многое...
Свежие подкасты про PHP
SDCast #109 с Антоном Титовым, автором RoadRunner и Cycle ORM.
https://sdcast.ksdaemon.ru/2019/10/sdcast-109/
The Undercover Elephpant с Derick Rethans автором Xdebug о том как устроена сборка мусора в PHP.
https://undercover-elephpant.com/episodes/what-is-garbage-collection-in-php-and-how-do-you-make-the-most-of-it-with-derick-rethans
Laravel Snippet – подкаст Тейлора. В последних эпизодах он делится советами о том, как строить бизнес на опенсорсе. Если ещё не слушали, рекомендую.
https://share.transistor.fm/s/bc9c3206
Пятиминутка PHP: DDD #7 — Парадигмы моделирования и многоуровневая архитектура – продолжение серии выпусков по знаменитой книге Эрика Эванса Domain-Drived Design.
https://5minphp.ru/episode71/
SDCast #109 с Антоном Титовым, автором RoadRunner и Cycle ORM.
https://sdcast.ksdaemon.ru/2019/10/sdcast-109/
The Undercover Elephpant с Derick Rethans автором Xdebug о том как устроена сборка мусора в PHP.
https://undercover-elephpant.com/episodes/what-is-garbage-collection-in-php-and-how-do-you-make-the-most-of-it-with-derick-rethans
Laravel Snippet – подкаст Тейлора. В последних эпизодах он делится советами о том, как строить бизнес на опенсорсе. Если ещё не слушали, рекомендую.
https://share.transistor.fm/s/bc9c3206
Пятиминутка PHP: DDD #7 — Парадигмы моделирования и многоуровневая архитектура – продолжение серии выпусков по знаменитой книге Эрика Эванса Domain-Drived Design.
https://5minphp.ru/episode71/