О монетезации опенсорса
Коммерческая компания Doctrine
https://www.doctrine-project.org/2019/05/21/monetizing-open-source.html
Вслед за Laravel, Symfony, и Packagist ещё один PHP проект стал коммерческой компанией. Теперь Доктрину можно профинансировать на Патреоне, Tidelift, купить тренинги или консультации, а также записаться на вебинары по символической цене. Успехов и процветания проекту!
Кстати о коммерческих проектах. Если вы хотите продавать ваш PHP-код, то packagist.com выкатил интересную фичу https://blog.packagist.com/private-packagist-for-vendors/ Правда это не защитит от возможности скачать код и выложить в другом месте.
А вот на GitHub теперь можно добавить в репозиторий файл FUNDING.yml, в котором указываются возможные модели финансирования проекта, включая Open Collective, Community Bridge, и Tidelift. После чего в интерфейсе можно включить соответствующую кнопку. https://help.github.com/en/articles/displaying-a-sponsor-button-in-your-repository
Коммерческая компания Doctrine
https://www.doctrine-project.org/2019/05/21/monetizing-open-source.html
Вслед за Laravel, Symfony, и Packagist ещё один PHP проект стал коммерческой компанией. Теперь Доктрину можно профинансировать на Патреоне, Tidelift, купить тренинги или консультации, а также записаться на вебинары по символической цене. Успехов и процветания проекту!
Кстати о коммерческих проектах. Если вы хотите продавать ваш PHP-код, то packagist.com выкатил интересную фичу https://blog.packagist.com/private-packagist-for-vendors/ Правда это не защитит от возможности скачать код и выложить в другом месте.
А вот на GitHub теперь можно добавить в репозиторий файл FUNDING.yml, в котором указываются возможные модели финансирования проекта, включая Open Collective, Community Bridge, и Tidelift. После чего в интерфейсе можно включить соответствующую кнопку. https://help.github.com/en/articles/displaying-a-sponsor-button-in-your-repository
www.doctrine-project.org
Monetizing Open Source - Doctrine: PHP Open Source Project
The Doctrine Project is an open-source PHP project that is home to home to several PHP libraries primarily focused on database storage and object mapping. The core projects are the Object Relational Mapper (ORM) and the Database Abstraction Layer (DBAL) it…
PHP-Дайджест № 157
(20 мая – 3 июня 2019)
https://habr.com/p/454558/
Обновления PHP, коммерческая компания Doctrine, PhpStorm 2019.2 EAP, Symfony 4.3, порция полезных инструментов, видеозаписи, и многое другое!
(20 мая – 3 июня 2019)
https://habr.com/p/454558/
Обновления PHP, коммерческая компания Doctrine, PhpStorm 2019.2 EAP, Symfony 4.3, порция полезных инструментов, видеозаписи, и многое другое!
Дженерики в PHP
https://www.daveliddament.co.uk/articles/php-generics-today-almost/
По ссылке годная статья о том, что такое дженерики и почему они нужны в PHP. А также обзор существующих реализаций в Psalm/Phan.
На конференции PHPCE 2018 Расмус сказал https://youtu.be/SvEGwtgLtjA?t=2878, что основной проблемой для реализации является производительность. Потому что проверки типов в рантайме могут обойтись довольно дорого. Вспомним, что типизированные свойства вылились приблизительно в 1% падения производительности.
На PHP Russia Никита Попов также подтвердил https://youtu.be/teKnckg5x7I?t=1105, что реализовать будет не просто, но он хотел бы видеть эту фичу в PHP.
Вдогонку ещё пара статей на эту тему:
https://www.phparch.com/2018/11/the-case-for-generics-in-php/
https://stitcher.io/blog/php-generics-and-why-we-need-them
https://www.daveliddament.co.uk/articles/php-generics-today-almost/
По ссылке годная статья о том, что такое дженерики и почему они нужны в PHP. А также обзор существующих реализаций в Psalm/Phan.
На конференции PHPCE 2018 Расмус сказал https://youtu.be/SvEGwtgLtjA?t=2878, что основной проблемой для реализации является производительность. Потому что проверки типов в рантайме могут обойтись довольно дорого. Вспомним, что типизированные свойства вылились приблизительно в 1% падения производительности.
На PHP Russia Никита Попов также подтвердил https://youtu.be/teKnckg5x7I?t=1105, что реализовать будет не просто, но он хотел бы видеть эту фичу в PHP.
Вдогонку ещё пара статей на эту тему:
https://www.phparch.com/2018/11/the-case-for-generics-in-php/
https://stitcher.io/blog/php-generics-and-why-we-need-them
www.daveliddament.co.uk
Dave Liddament
Dave Liddament's technical blog
PHP-Дайджест № 158
(3 – 17 июня 2019)
https://habr.com/p/456332/
PHP 7.4.0 alpha 1, DevConfX, по паре принятых и новых RFC из PHP Internals, порция полезных инструментов, и многое другое!
(3 – 17 июня 2019)
https://habr.com/p/456332/
PHP 7.4.0 alpha 1, DevConfX, по паре принятых и новых RFC из PHP Internals, порция полезных инструментов, и многое другое!
PHP-Дайджест № 159
(17 июня – 1 июля 2019)
https://habr.com/ru/post/458292/
PHP 7.4.0 alpha 2, BeerPHP, обзор свежих RFC из PHP Internals, включая Strict operators directive, порция полезных инструментов, видео и многое другое!
(17 июня – 1 июля 2019)
https://habr.com/ru/post/458292/
PHP 7.4.0 alpha 2, BeerPHP, обзор свежих RFC из PHP Internals, включая Strict operators directive, порция полезных инструментов, видео и многое другое!
Полезное обновление 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.