Полезное обновление 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() {а такого, который на вид вполне норм, но при этом нигде не вызывается. Проблема в том, что такие инструменты вычисляют неиспользуемые куски статически, и из-за динамической природы PHP все возможные варианты просчитать довольно сложно.
return;
echo "I'm dead";
};
С другой стороны, если вся функциональность вашего приложения покрыта тестами, то теоретически найти "мёртвые" участки можно из покрытия. Но на практике так бывает
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/