Сумма прописью
В последнее время я частенько работаю с договорами. Когда в тексте нужно поменять сумму прописью, я использую первый попавшийся онлайн-сервис. Но вчера случайно обнаружил, что то же самое можно сделать в PHP одной консольной командой (должно быть установлено расширение
Сейчас вы в комментариях напишете, что я просто мог попросить "чатик" поправить мне договор. Но давайте не будем об этом.😅
Вообще
В последнее время я частенько работаю с договорами. Когда в тексте нужно поменять сумму прописью, я использую первый попавшийся онлайн-сервис. Но вчера случайно обнаружил, что то же самое можно сделать в PHP одной консольной командой (должно быть установлено расширение
intl):php -r "echo new NumberFormatter('ru', NumberFormatter::SPELLOUT)->format(12_345);"двенадцать тысяч триста сорок пять
Сейчас вы в комментариях напишете, что я просто мог попросить "чатик" поправить мне договор. Но давайте не будем об этом.
Вообще
intl умеет делать кучу полезных вещей, но этот факт всё время вылетает из головы. Наверняка существует огромное количество велосипедов, которые можно было бы заменить парой вызовов соответствующих функций.Please open Telegram to view this post
VIEW IN TELEGRAM
🔥99👍53
Почему позднее связывание статическое?
В PHP есть такая фича, как позднее статическое связывание (late static binding или LSB). Она позволяет обратиться к вызываемому/инстанциированному классу в контексте наследования.
Когда-то давно для работы с LSB использовались функции forward_static_call, forward_static_call_array, get_called_class. Теперь всё это можно делать через
Обратимся к документации, чтобы разобраться в нейминге. Почему связывание "позднее"?
Ок, это понятно. Но почему "статическое" и почему
А вот тут не логично, согласитесь.
Тем не менее, мы с вами так привыкли к
В PHP есть такая фича, как позднее статическое связывание (late static binding или LSB). Она позволяет обратиться к вызываемому/инстанциированному классу в контексте наследования.
Когда-то давно для работы с LSB использовались функции forward_static_call, forward_static_call_array, get_called_class. Теперь всё это можно делать через
static:
/**
* @psalm-consistent-constructor
* @phpstan-consistent-constructor
*/
class A
{
final public static function staticClass(): string
{
return static::class;
}
final public static function newStatic(): static
{
return new static();
}
}
class B extends A {}
var_dump(
A::staticClass(), // "A"
A::newStatic(), // object(A)
A::newStatic()::staticClass(), // "A"
B::staticClass(), // "B"
B::newStatic(), // object(B)
B::newStatic()::staticClass(), // "B"
);
Обратимся к документации, чтобы разобраться в нейминге. Почему связывание "позднее"?
Природа названия «позднее статическое связывание» возникает из внутренней логики работы языка. Связывание называется «поздним», потому что конструкция static:: разрешается не в тот класс, в котором определили метод, а вычисляется на основе информации в ходе исполнения программы.Ок, это понятно. Но почему "статическое" и почему
static?Связывание также назвали «статическим», поскольку этот механизм в числе прочего умеет вызывать статические методы.
А вот тут не логично, согласитесь.
static — это про то, что метод/свойство доступны без объекта, а не про то, на какой класс мы ссылаемся. Гораздо лучше было бы взять called:: или late::. Документация объясняет, почему так вышло:Вместо введения нового ключевого слова для позднего статического связывания разработчики языка выбрали ключевое слово static, которое зарезервировали прежде.Тем не менее, мы с вами так привыкли к
static, что уже не чувствуем нелогичности этого нейминга...👍55💯13🔥6🤯5❤1👌1
Пых
Почему позднее связывание статическое? В PHP есть такая фича, как позднее статическое связывание (late static binding или LSB). Она позволяет обратиться к вызываемому/инстанциированному классу в контексте наследования. Когда-то давно для работы с LSB использовались…
self вместо static в финальных классах
Изначально я садился писать этот пост, но решил вас предварительно разогреть...😉
Представьте себе такую ситуацию:
Есть ли тут ошибка? Поначалу кажется, что есть. В интерфейсе сказано: нужно вернуть инстанс класса позднего статического связывания, а реализация использует более широкий тип
А теперь обратим внимание, что класс
Недавно подписчик Пыха @m1chael19 закинул PR с исправлением этого недоразумения. Фикс посчитали очень логичным и смерджили в 8.5 без RFC. Поздравим Михаила с первым контрибьютом в PHP!
https://github.com/php/php-src/pull/17724
https://3v4l.org/qWDQY/rfc#vgit.master
Изначально я садился писать этот пост, но решил вас предварительно разогреть...
Представьте себе такую ситуацию:
interface A
{
public static function new(): static;
}
final class B implements A
{
public static function new(): self
{
return new self();
}
}
Есть ли тут ошибка? Поначалу кажется, что есть. В интерфейсе сказано: нужно вернуть инстанс класса позднего статического связывания, а реализация использует более широкий тип
self и поэтому нарушает LSP. PHP тоже так считает: https://3v4l.org/qWDQY.А теперь обратим внимание, что класс
B финальный! В цепочке наследования после B уже никого не может быть, это самый "поздний" возможный класс. В финальном классе всегда self =:= static. Так что ошибки на самом деле нет!Недавно подписчик Пыха @m1chael19 закинул PR с исправлением этого недоразумения. Фикс посчитали очень логичным и смерджили в 8.5 без RFC. Поздравим Михаила с первым контрибьютом в PHP!
https://github.com/php/php-src/pull/17724
https://3v4l.org/qWDQY/rfc#vgit.master
Please open Telegram to view this post
VIEW IN TELEGRAM
3v4l.org
Online PHP editor | output for qWDQY
Run your php code online; get statistics, vld output and compare output from all versions.
🔥93🎉40👍23🤔3
Друзья, я долго вынашивал этот план. Заручился поддержкой трёх родных ивент-компаний и сегодня принял окончательное решение:
В сентябре у нас будет Пых.Конф!
Подробности чуть позже.
В сентябре у нас будет Пых.Конф!
Подробности чуть позже.
🔥186👍38😱17🫡5🎃2🦄2🤯1
Кодим с джуном на PHP #2 / Павел Бучнев учит Валентина работать с Claude
На этот раз джуном буду я! Когда Павел Бучнев с канала PHP Fart Time узнал, что я всячески сопротивляюсь использованию LLM, он тут же решил меня переубедить, а заодно показать, как пишет код с помощью Claude и какие инструменты использует.
Встречаемся в ближайшую среду (26 марта) в
YouTube: https://youtu.be/UIrl1lIF2tE
VK Видео: https://vkvideo.ru/video-228746873_456239029
На этот раз джуном буду я! Когда Павел Бучнев с канала PHP Fart Time узнал, что я всячески сопротивляюсь использованию LLM, он тут же решил меня переубедить, а заодно показать, как пишет код с помощью Claude и какие инструменты использует.
Встречаемся в ближайшую среду (26 марта) в
19:00!YouTube: https://youtu.be/UIrl1lIF2tE
VK Видео: https://vkvideo.ru/video-228746873_456239029
YouTube
Кодим с джуном на PHP #2 / Павел Бучнев учит Валентина работать с Claude
На этот раз джуном буду я! Когда Павел Бучнев с канала PHP Fart Time узнал, что я всячески сопротивляюсь использованию LLM, он тут же решил меня переубедить, а заодно показать, как пишет код с помощью Claude и какие инструменты использует.
Генератор контекста:…
Генератор контекста:…
5🔥79👍24❤6😱3
Пых
Кодим с джуном на PHP #2 / Павел Бучнев учит Валентина работать с Claude На этот раз джуном буду я! Когда Павел Бучнев с канала PHP Fart Time узнал, что я всячески сопротивляюсь использованию LLM, он тут же решил меня переубедить, а заодно показать, как пишет…
Кодим с джуном на PHP #2 / Павел Бучнев учит Валентина работать с Claude
Сегодня Павел Бучнев заставит меня попробовать Claude! Посмотрим, что из этого выйдет!
Стрим перенесли на час, присоединяйтесь в
YouTube: https://youtu.be/UIrl1lIF2tE
VK Видео: https://vkvideo.ru/video-228746873_456239029
Генератор контекста: https://docs.ctxgithub.com/
Промпт: https://gist.github.com/butschster/1b7e597691cc1a6476b15dc120ecbddb
Сегодня Павел Бучнев заставит меня попробовать Claude! Посмотрим, что из этого выйдет!
Стрим перенесли на час, присоединяйтесь в
20:00.YouTube: https://youtu.be/UIrl1lIF2tE
VK Видео: https://vkvideo.ru/video-228746873_456239029
Генератор контекста: https://docs.ctxgithub.com/
Промпт: https://gist.github.com/butschster/1b7e597691cc1a6476b15dc120ecbddb
YouTube
Кодим с джуном на PHP #2 / Павел Бучнев учит Валентина работать с Claude
На этот раз джуном буду я! Когда Павел Бучнев с канала PHP Fart Time узнал, что я всячески сопротивляюсь использованию LLM, он тут же решил меня переубедить, а заодно показать, как пишет код с помощью Claude и какие инструменты использует.
Генератор контекста:…
Генератор контекста:…
🔥27👍6💩3😁1
Open Source Цех #4 / PHP-CS-Fixer, Brick\Math, Infection
Сегодня в очередном выпуске Цеха изучим ревью моего PR в PHP-CS-Fixer с прошлых стримов, поконтрибьютим в пару проектов и посмотрим на канал @open_source_php от Димы Дерепко.
Приходите в 18, разогрею вас перед стримом фартанов!
https://youtu.be/viWYmUUsD5I
https://vkvideo.ru/video-228746873_456239037
Сегодня в очередном выпуске Цеха изучим ревью моего PR в PHP-CS-Fixer с прошлых стримов, поконтрибьютим в пару проектов и посмотрим на канал @open_source_php от Димы Дерепко.
Приходите в 18, разогрею вас перед стримом фартанов!
https://youtu.be/viWYmUUsD5I
https://vkvideo.ru/video-228746873_456239037
YouTube
Open Source Цех #4 / PHP-CS-Fixer, Brick\Math, Infection
Сегодня в очередном выпуске Цеха изучим ревью моего PR в PHP-CS-Fixer с прошлых стримов, поконтрибьютим в пару проектов и посмотрим на канал https://news.1rj.ru/str/open_source_php от Димы Дерепко.
0:00 Вступление
0:36 Пых.Конф в сентябре
2:24 Где мои слоны?
5:28 After…
0:00 Вступление
0:36 Пых.Конф в сентябре
2:24 Где мои слоны?
5:28 After…
👍4❤3🔥2
Пых
Open Source Цех #4 / PHP-CS-Fixer, Brick\Math, Infection Сегодня в очередном выпуске Цеха изучим ревью моего PR в PHP-CS-Fixer с прошлых стримов, поконтрибьютим в пару проектов и посмотрим на канал @open_source_php от Димы Дерепко. Приходите в 18, разогрею…
Как подменить файл из autoload.files
Сегодня в конце стрима я написал в тикете Infection, почему мутация функций очень полезна. Один из мейнтейнеров поставил под вопрос возможность подмены оригинальных файлов из секциине на жену, а в код сгенерированного автолоадера Composer:
И придумал следующую лазейку:
Да, грязновато, но, похоже, это единственный способ добавить мутацию функций в Infection...
Готовы вместе со мной поработать в Цеху в эти выходные?! Ставьте💯 , если да!
Сегодня в конце стрима я написал в тикете Infection, почему мутация функций очень полезна. Один из мейнтейнеров поставил под вопрос возможность подмены оригинальных файлов из секции
autoload.files на мутированные. Ну а поскольку я обожаю такие вызовы, я пошёл смотреть if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) {
$GLOBALS['__composer_autoload_files'][$fileIdentifier] = true;
require $file;
}И придумал следующую лазейку:
function disableAutoloadFile(string $vendorDir, string $file): void
{
/** @var array<non-empty-string, non-empty-string> */
$idToFileMap = require $vendorDir . '/composer/autoload_files.php';
$id = array_search(realpath($file), $idToFileMap);
if ($id === false) {
throw new LogicException("File `{$file}` is not registered in autoload.files");
}
if (isset($GLOBALS['__composer_autoload_files'][$id])) {
throw new LogicException("File `{$file}` is already loaded");
}
$GLOBALS['__composer_autoload_files'][$id] = true;
}
disableAutoloadFile(__DIR__ . '/vendor', __DIR__ . '/src/functions.php');
require_once $infectionTmp . '/functions_mutated.php';
require_once __DIR__ . '/vendor/autoload.php';
Да, грязновато, но, похоже, это единственный способ добавить мутацию функций в Infection...
Готовы вместе со мной поработать в Цеху в эти выходные?! Ставьте
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Пых
Open Source Цех #4 / PHP-CS-Fixer, Brick\Math, Infection
Сегодня в очередном выпуске Цеха изучим ревью моего PR в PHP-CS-Fixer с прошлых стримов, поконтрибьютим в пару проектов и посмотрим на канал @open_source_php от Димы Дерепко.
Приходите в 18, разогрею…
Сегодня в очередном выпуске Цеха изучим ревью моего PR в PHP-CS-Fixer с прошлых стримов, поконтрибьютим в пару проектов и посмотрим на канал @open_source_php от Димы Дерепко.
Приходите в 18, разогрею…
💯39👍17🥴12🔥7❤2😁2🥰1🤔1
Пых
Как подменить файл из autoload.files Сегодня в конце стрима я написал в тикете Infection, почему мутация функций очень полезна. Один из мейнтейнеров поставил под вопрос возможность подмены оригинальных файлов из секции autoload.files на мутированные. Ну а…
Open Source Цех #5 / Мутация функций в Infection
Через час в 15 жду всех в Цеху! Попробуем научить Infection мутировать функции, а заодно разберёмся, как работает замечательный фреймворк мутационного тестирования от Макса Рафалко.
YouTube: https://youtu.be/UTaRm_sZr_w
VK Видео: https://vkvideo.ru/video-228746873_456239039
Тикет: https://github.com/infection/infection/issues/1482
Задонатить: https://www.donationalerts.com/r/vudaltsov
Через час в 15 жду всех в Цеху! Попробуем научить Infection мутировать функции, а заодно разберёмся, как работает замечательный фреймворк мутационного тестирования от Макса Рафалко.
YouTube: https://youtu.be/UTaRm_sZr_w
VK Видео: https://vkvideo.ru/video-228746873_456239039
Тикет: https://github.com/infection/infection/issues/1482
Задонатить: https://www.donationalerts.com/r/vudaltsov
YouTube
Open Source Цех #5 / Мутация функций в Infection
В этом выпуске Цеха мы с вами попробуем научить Infection мутировать функции! Заодно поймём в нюансах, как работает этот замечательный фреймворк мутационного тестирования от Макса Рафалко.
Тикет с обсуждением: https://github.com/infection/infection/issues/1482…
Тикет с обсуждением: https://github.com/infection/infection/issues/1482…
🔥15👍8❤3
Пых
Open Source Цех #5 / Мутация функций в Infection Через час в 15 жду всех в Цеху! Попробуем научить Infection мутировать функции, а заодно разберёмся, как работает замечательный фреймворк мутационного тестирования от Макса Рафалко. YouTube: https://youtu.be/UTaRm_sZr_w…
Open Source Цех #5 / Мутация функций в Infection
Залетайте в Цех, начинаю разбирать Infection!
YouTube: https://youtu.be/UTaRm_sZr_w
VK Видео: https://vkvideo.ru/video-228746873_456239039
Тикет: https://github.com/infection/infection/issues/1482
Задонатить: https://www.donationalerts.com/r/vudaltsov
Комментировать можно под этим постом.
Залетайте в Цех, начинаю разбирать Infection!
YouTube: https://youtu.be/UTaRm_sZr_w
VK Видео: https://vkvideo.ru/video-228746873_456239039
Тикет: https://github.com/infection/infection/issues/1482
Задонатить: https://www.donationalerts.com/r/vudaltsov
Комментировать можно под этим постом.
YouTube
Open Source Цех #5 / Мутация функций в Infection
В этом выпуске Цеха мы с вами попробуем научить Infection мутировать функции! Заодно поймём в нюансах, как работает этот замечательный фреймворк мутационного тестирования от Макса Рафалко.
Тикет с обсуждением: https://github.com/infection/infection/issues/1482…
Тикет с обсуждением: https://github.com/infection/infection/issues/1482…
🔥9👍4💩1
Пых
Коллекционный PHP-слоник 💙 Пых! Как вы все знаете, маскот языка PHP — слон. В 1998 году Vincent Pontier придумал дизайн оригинального плюшевого слоника, который с тех пор был многократно переосмыслен по различным поводам. Я давно мечтал о слоне для Пыха…
Последняя возможность купить 💙 слона!
В прошлую среду кампания по сбору средств на партию коллекционных слоников Пых достигла финансовой цели, преодолев порог в ₽400к! Это очень круто, я не ожидал, что всё получится так быстро — спасибо вам огромное за такую мощную поддержку!
Производство стартовало ещё на прошлой неделе, ориентировочная дата завершения — 1 июля. С учётом доставки партии из Иркутска в Москву, я надеюсь, что начну вам отправлять слоников уже 7 июля.
А теперь радостные новости по поводу лекции. Сегодня я связался с менеджером planeta.ru, объяснил, что нам нет смысла ждать 20 апреля, и она согласилась завершить проект досрочно — 2 апреля!
Это означает, что у тех, кто ещё не заказал слоника, осталось 3 дня, чтобы поддержать проект. А я тем временем начинаю готовиться к лекции по MessageBus. До встречи!
https://planeta.ru/campaigns/phpyh_slon
В прошлую среду кампания по сбору средств на партию коллекционных слоников Пых достигла финансовой цели, преодолев порог в ₽400к! Это очень круто, я не ожидал, что всё получится так быстро — спасибо вам огромное за такую мощную поддержку!
Производство стартовало ещё на прошлой неделе, ориентировочная дата завершения — 1 июля. С учётом доставки партии из Иркутска в Москву, я надеюсь, что начну вам отправлять слоников уже 7 июля.
А теперь радостные новости по поводу лекции. Сегодня я связался с менеджером planeta.ru, объяснил, что нам нет смысла ждать 20 апреля, и она согласилась завершить проект досрочно — 2 апреля!
Это означает, что у тех, кто ещё не заказал слоника, осталось 3 дня, чтобы поддержать проект. А я тем временем начинаю готовиться к лекции по MessageBus. До встречи!
https://planeta.ru/campaigns/phpyh_slon
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥34👍9👏7❤1🍌1
Пых
Open Source Цех #4 / PHP-CS-Fixer, Brick\Math, Infection Сегодня в очередном выпуске Цеха изучим ревью моего PR в PHP-CS-Fixer с прошлых стримов, поконтрибьютим в пару проектов и посмотрим на канал @open_source_php от Димы Дерепко. Приходите в 18, разогрею…
Смерджили мой PR в Brick\Math с Open Source Цеха #4!
https://github.com/brick/math/pull/90
Суть изменения тривиальна: сузить возвращаемый тип
Сначала на стриме я попробовал по-честному расставить типы по всей внутрянке, но упёрся в то, что в местах конкатенации
BenMorel согласился с моими доводами и зарелизил улучшение в 0.13.1.
Процесс контрибьютинга от форка до PR:
https://youtu.be/viWYmUUsD5I?t=3900s
https://vkvideo.ru/video-228746873_456239037?t=1h7m20s
https://github.com/brick/math/pull/90
Суть изменения тривиальна: сузить возвращаемый тип
BigInteger::__toString() и BigDecimal::__toString() до numeric-string, чтобы после приведения к строке значения можно было передавать в numeric-string и non-empty-string параметры (мне это потребовалось в недрах Typhoon).Сначала на стриме я попробовал по-честному расставить типы по всей внутрянке, но упёрся в то, что в местах конкатенации
numeric-string не выводится и его нужно форсить (прописывать @var или assert). В итоге предложил автору лёгкий путь: зафорсить тип только в самом методе __toString() и больше ничего не менять.BenMorel согласился с моими доводами и зарелизил улучшение в 0.13.1.
Процесс контрибьютинга от форка до PR:
https://youtu.be/viWYmUUsD5I?t=3900s
https://vkvideo.ru/video-228746873_456239037?t=1h7m20s
GitHub
Force numeric-string return type in BigDecimal::__toString() and BigInteger::__toString() by vudaltsov · Pull Request #90 · brick/math
Closes #89.
@return numeric-string cannot be added to BigRational, because '10/20' is not a numeric string. So I added numeric-string to BigDecimal and BigInteger classes only. This...
@return numeric-string cannot be added to BigRational, because '10/20' is not a numeric string. So I added numeric-string to BigDecimal and BigInteger classes only. This...
👍38🔥15❤5🏆2❤🔥1🤣1
Пыхап #3 / 18 апреля 2025
Ровно через 2 недели состоится третий Пыхап! В программе 2 доклада и так полюбившийся вам Открытый микрофон:
😨 Раскапываем редис
Алексей Сидоркин раскроет нам все нюансы работы с Redis: кластеризация, AOF vs RDB, структуры данных и клиенты для PHP.
💰 Лайвкодим крипту на PHP
Сергей Жук снова достанет свои Money и, пошарив экран, покажет, как перевести крипту и не остаться с "нонсом".
🎤 Открытый микрофон (только офлайн)
В конце митапа любой участник сможет на 5-10 минут завладеть микрофоном и флипчартом и поделиться насущной проблемой, элегантным решением или историей про то, как уронил накануне прод.
🍕 В перерывах традиционное пицца-driven общение, а после митапа афтепати в грузинском ресторане.
Пыхап пройдёт всё там же — в уютном лофте «Событие» на Таганке. Собираемся в пятницу в 18:30. Ну и конечно же митап будет транслироваться на YouTube и VK Видео с записью!
https://phpyh.timepad.ru/event/3250220/#register
Спонсор третьего Пыхапа — YCLIENTS.
Ровно через 2 недели состоится третий Пыхап! В программе 2 доклада и так полюбившийся вам Открытый микрофон:
Алексей Сидоркин раскроет нам все нюансы работы с Redis: кластеризация, AOF vs RDB, структуры данных и клиенты для PHP.
Сергей Жук снова достанет свои Money и, пошарив экран, покажет, как перевести крипту и не остаться с "нонсом".
В конце митапа любой участник сможет на 5-10 минут завладеть микрофоном и флипчартом и поделиться насущной проблемой, элегантным решением или историей про то, как уронил накануне прод.
Пыхап пройдёт всё там же — в уютном лофте «Событие» на Таганке. Собираемся в пятницу в 18:30. Ну и конечно же митап будет транслироваться на YouTube и VK Видео с записью!
https://phpyh.timepad.ru/event/3250220/#register
Спонсор третьего Пыхапа — YCLIENTS.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥33👍14❤8
PHP True Async: обсуждаем RFC с автором
1 марта Дмитрий опубликовал первую версию RFC "PHP True Async". Цели предложения: установить стандарт конкурентного программирования на PHP, разработать С-API, отрефакторить существующие функции и расширения.
В процессе бурного обсуждения в internals было поднято несколько важных вопросов:
▸ На какие этапы следует разбить такой большой проект?
▸ Нужно ли явно активировать Scheduler и как это связано с обратной совместимостью?
▸ Нужна ли в PHP structured concurrency? Как это согласуется с файберами?
▸ Будет ли поддержка многопоточности, как, например, в Go?
Чтобы во всём этом разобраться, я решил организовать стрим с участием Дмитрия, разработчика RFC, и Вадима, автора доклада Чем вам не угодил асинхронный PHP? на PHP Russia 2024.
Встречаемся в эту среду 9 апреля в 19:00 МСК:
https://youtu.be/K9FnRQIzklM
https://vkvideo.ru/video-228746873_456239042
Предвкушаю непростой для понимания разговор, поэтому приступил к изучению матчасти. Вот несколько полезных ссылок:
▸ Первая версия RFC, 1-я фаза обсуждения
▸ Обновлённая версия RFC, 2-я фаза обсуждения
▸ Репозиторий с самыми актуальными текстами Дмитрия на GitHub
▸ Notes on structured concurrency, or: Go statement considered harmful
▸ Java Virtual Threads, Kotlin Coroutines, Swift Structured concurrency
1 марта Дмитрий опубликовал первую версию RFC "PHP True Async". Цели предложения: установить стандарт конкурентного программирования на PHP, разработать С-API, отрефакторить существующие функции и расширения.
В процессе бурного обсуждения в internals было поднято несколько важных вопросов:
▸ На какие этапы следует разбить такой большой проект?
▸ Нужно ли явно активировать Scheduler и как это связано с обратной совместимостью?
▸ Нужна ли в PHP structured concurrency? Как это согласуется с файберами?
▸ Будет ли поддержка многопоточности, как, например, в Go?
Чтобы во всём этом разобраться, я решил организовать стрим с участием Дмитрия, разработчика RFC, и Вадима, автора доклада Чем вам не угодил асинхронный PHP? на PHP Russia 2024.
Встречаемся в эту среду 9 апреля в 19:00 МСК:
https://youtu.be/K9FnRQIzklM
https://vkvideo.ru/video-228746873_456239042
Предвкушаю непростой для понимания разговор, поэтому приступил к изучению матчасти. Вот несколько полезных ссылок:
▸ Первая версия RFC, 1-я фаза обсуждения
▸ Обновлённая версия RFC, 2-я фаза обсуждения
▸ Репозиторий с самыми актуальными текстами Дмитрия на GitHub
▸ Notes on structured concurrency, or: Go statement considered harmful
▸ Java Virtual Threads, Kotlin Coroutines, Swift Structured concurrency
🔥58👍14❤4
Пых
Пыхап #3 / 18 апреля 2025 Ровно через 2 недели состоится третий Пыхап! В программе 2 доклада и так полюбившийся вам Открытый микрофон: 😨 Раскапываем редис Алексей Сидоркин раскроет нам все нюансы работы с Redis: кластеризация, AOF vs RDB, структуры данных…
Регистрация на Пыхап #3 открыта!
https://phpyh.timepad.ru/event/3250220/#register
В конце следующей недели пройдёт третий Пыхап. В программе 2 доклада, Открытый микрофон (только офлайн), пицца и афтепати.
🗓 18 апреля в 18:30 (пятница)
📍 Событие Лофт на Таганке
💸 1000р. за офлайн-билет, участие онлайн бесплатное
Спонсор митапа — YCLIENTS.
https://phpyh.timepad.ru/event/3250220/#register
В конце следующей недели пройдёт третий Пыхап. В программе 2 доклада, Открытый микрофон (только офлайн), пицца и афтепати.
Спонсор митапа — YCLIENTS.
Please open Telegram to view this post
VIEW IN TELEGRAM
phpyh.timepad.ru
Пыхап #3 / 18 апреля 2025 / События на TimePad.ru
Пишешь на PHP? Приходи на митап от автора канала «Пых»! В программе 2 хардкорных доклада, Открытый микрофон, пицца-driven общение и уютная атмосфера лофта «Событие» в центре Москвы.
🔥9❤5👍5
Property Hooks во всей красе
Вчера на курсе обратил внимание, что низкоуровневый интерфейс обработчика сообщений, о котором многие из вас скоро узнают на лекции по MessageBus, в PHP 8.4 было бы в разы приятнее имплементировать. Как это выглядит сейчас:
Бесит, что для
Ну кайф же? -5 строк кода! К сожалению, я пока не могу себе позволить писать опенсорсные либы с
___________
Тем временем разобрали половину билетов на Пыхап в следующую пятницу. Регистрация продолжается: https://phpyh.timepad.ru/event/3250220/#register
Вчера на курсе обратил внимание, что низкоуровневый интерфейс обработчика сообщений, о котором многие из вас скоро узнают на лекции по MessageBus, в PHP 8.4 было бы в разы приятнее имплементировать. Как это выглядит сейчас:
interface Handler
{
public function id(): string;
public function handle(Context $context): mixed;
}
final readonly class CallableHandler implements Handler
{
public function __construct(
private string $id,
private Closure $handler,
) {}
public function id(): string
{
return $this->id;
}
public function handle(Context $context): mixed
{
return ($this->handler)($context);
}
}
Бесит, что для
id в имплементации надо так много всего написать. А вот аналогичный вариант в PHP 8.4:
interface Handler
{
public string $id { get; }
public function handle(Context $context): mixed;
}
final readonly class CallableHandler implements Handler
{
public function __construct(
public string $id,
private Closure $handler,
) {}
public function handle(Context $context): mixed
{
return ($this->handler)($context);
}
}
Ну кайф же? -5 строк кода! К сожалению, я пока не могу себе позволить писать опенсорсные либы с
"php": "^8.4", но хоть вы за меня на проектах оттянитесь!___________
Тем временем разобрали половину билетов на Пыхап в следующую пятницу. Регистрация продолжается: https://phpyh.timepad.ru/event/3250220/#register
phpyh.timepad.ru
Пыхап #3 / 18 апреля 2025 / События на TimePad.ru
Пишешь на PHP? Приходи на митап от автора канала «Пых»! В программе 2 хардкорных доклада, Открытый микрофон, пицца-driven общение и уютная атмосфера лофта «Событие» в центре Москвы.
🔥27👍12💩5👎4❤1
Пых
PHP True Async: обсуждаем RFC с автором 1 марта Дмитрий опубликовал первую версию RFC "PHP True Async". Цели предложения: установить стандарт конкурентного программирования на PHP, разработать С-API, отрефакторить существующие функции и расширения. В процессе…
YouTube
PHP True Async: обсуждаем RFC с автором
1 марта Дмитрий опубликовал первую версию RFC "PHP True Async". Цели предложения: установить стандарт конкурентного программирования на PHP, разработать С-API, отрефакторить существующие функции и расширения.
В процессе бурного обсуждения в internals было…
В процессе бурного обсуждения в internals было…
PHP True Async: обсуждаем RFC с автором
Сегодня в 19:00 по Москве мы встретимся с Дмитрием и Вадимом, чтобы обсудить RFC PHP True Async и перспективы появления нативной асинхронности в PHP. Основные темы:
▸ Опыт других языков.
▸ Экосистемы AMPHP, ReactPHP, Swoole.
▸ Нужна ли в PHP structured concurrency? Как это согласуется с файберами?
▸ Будет ли поддержка многопоточности, как, например, в Go?
▸ На какие этапы будет разбит такой большой проект?
https://youtu.be/K9FnRQIzklM
https://vkvideo.ru/video-228746873_456239042
🎫 Авторы самых интересных вопросов в чате трансляции получат бесплатные билеты на третий Пыхап!
Для подготовки рекомендую изучить RFC, а также посмотреть доклад Вадима Чем вам не угодил асинхронный PHP? Другие полезные ссылки в первом анонсе.
Сегодня в 19:00 по Москве мы встретимся с Дмитрием и Вадимом, чтобы обсудить RFC PHP True Async и перспективы появления нативной асинхронности в PHP. Основные темы:
▸ Опыт других языков.
▸ Экосистемы AMPHP, ReactPHP, Swoole.
▸ Нужна ли в PHP structured concurrency? Как это согласуется с файберами?
▸ Будет ли поддержка многопоточности, как, например, в Go?
▸ На какие этапы будет разбит такой большой проект?
https://youtu.be/K9FnRQIzklM
https://vkvideo.ru/video-228746873_456239042
Для подготовки рекомендую изучить RFC, а также посмотреть доклад Вадима Чем вам не угодил асинхронный PHP? Другие полезные ссылки в первом анонсе.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥29👍16❤7😢1
Пых
PHP True Async: обсуждаем RFC с автором Сегодня в 19:00 по Москве мы встретимся с Дмитрием и Вадимом, чтобы обсудить RFC PHP True Async и перспективы появления нативной асинхронности в PHP. Основные темы: ▸ Опыт других языков. ▸ Экосистемы AMPHP, ReactPHP…
PHP True Async: обсуждаем RFC с автором
Мы начали! Комментировать можно прямо под этим постом.
https://youtu.be/K9FnRQIzklM
https://vkvideo.ru/video-228746873_456239042
Огромное спасибо моим гостям и зрителям, получилось очень круто!
Мы начали! Комментировать можно прямо под этим постом.
https://youtu.be/K9FnRQIzklM
https://vkvideo.ru/video-228746873_456239042
Огромное спасибо моим гостям и зрителям, получилось очень круто!
YouTube
PHP True Async: обсуждаем RFC с автором
1 марта Дмитрий опубликовал первую версию RFC "PHP True Async". Цели предложения: установить стандарт конкурентного программирования на PHP, разработать С-API, отрефакторить существующие функции и расширения.
В процессе бурного обсуждения в internals было…
В процессе бурного обсуждения в internals было…
👍19🔥4👏2
Краудфандинг. Лекция по MessageBus
Проект Коллекционный PHP-слоник Пых успешно собрал средства. Вы перевыполнили план аж на 21%!💙
Как мы действуем дальше:
▸ Завтра (12 апреля) в 14:00 я прочитаю лекцию по MessageBus. Для получения ссылки на трансляцию обратитесь к новоиспечённому помощнику канала Пых — Хоботу.
▸ По слоникам PHP 8 я передал информацию Сергею Пантелееву. Он уже всем написал в личку и приступил к отправке.
▸ Пых-слоники, как вы знаете из предыдущих новостей, давно запущены в производство и должны приехать ко мне в начале июля. Тогда же я начну проводить личные встречи.
Ещё раз всем спасибо за участие и до встречи на лекции!
Проект Коллекционный PHP-слоник Пых успешно собрал средства. Вы перевыполнили план аж на 21%!
Как мы действуем дальше:
▸ Завтра (12 апреля) в 14:00 я прочитаю лекцию по MessageBus. Для получения ссылки на трансляцию обратитесь к новоиспечённому помощнику канала Пых — Хоботу.
▸ По слоникам PHP 8 я передал информацию Сергею Пантелееву. Он уже всем написал в личку и приступил к отправке.
▸ Пых-слоники, как вы знаете из предыдущих новостей, давно запущены в производство и должны приехать ко мне в начале июля. Тогда же я начну проводить личные встречи.
Ещё раз всем спасибо за участие и до встречи на лекции!
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
👍27🔥21❤8