Через два часа выступаю на Podlodka PHP Crew!
Сегодняшний доклад — результат недавнего переосмысления многочисленных статей и выступлений Udi Dahan про CQRS, наложенный на мой опыт примения и преподавания этого архитектурного стиля.
Мне бы хотелось показать вам CQRS с нестандартного ракурса. Посмотрим, что у меня получится.🤫
Кстати, я всегда был убеждён, что отец CQRS — только Greg Young, но оказалось, что Udi тоже к этому причастен:
Сегодняшний доклад — результат недавнего переосмысления многочисленных статей и выступлений Udi Dahan про CQRS, наложенный на мой опыт примения и преподавания этого архитектурного стиля.
Мне бы хотелось показать вам CQRS с нестандартного ракурса. Посмотрим, что у меня получится.
Кстати, я всегда был убеждён, что отец CQRS — только Greg Young, но оказалось, что Udi тоже к этому причастен:
... both myself [Udi Dahan] and Greg Young (arguably the first two to talk about it and the two who ultimately collaborated on naming it – and now Google knows we didn’t mean “cars”) ...
Please open Telegram to view this post
VIEW IN TELEGRAM
2🔥33👍11🐳4❤1
Как и обещал, буду стараться делать линчи по средам. Сегодня предлагаю встретиться пораньше, в
18:00, чтобы вы успели на Podlodka.https://youtu.be/FYVfQk0-t3U
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
PHP-линч #23 • savinmikhail/Comments-Density
Внимание! Чтобы YouTube опубликовал ваш комментарий, пишите не полный URL, а, например, symfony/console.
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш…
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш…
2🔥27👍7❤4😁1
В последний момент исправляю рефлексию в PHP 8.4!
На неделе я начал добавлять поддержку PHP 8.4 в Typhoon Reflection, и очень рад, что взялся за это до релиза.
Во-первых, я зарепортил отсутствие обещанной в RFC хуков константы
А вот что меня реально загрузило, так это поведение новых методов
Сначала я подумал, что это баг, и создал тикет php-src#16175. Ilija, автор RFC, объяснил, почему так работает. Дело в том, что у свойств с симметричной видимостью отсутствует флаг ассиметричности. Поэтому для
Стало понятно, вот только пользоваться такой рефлексией по-прежнему дико неудобно. В API протекли детали реализации, которые, наоборот, должны быть инкапсулированы. Задача рефлексии — предоставить пользователю комфортный способ изучать код, а не продемонстрировать подкапотное устройство языка.
Но это ещё ладно. Сегодня до меня дошло, что в текущем виде рефлексия в PHP 8.4 ломает обратную совместимость! Если раньше проверка
Например, такой код корректно отработает для любых классов в PHP 8.3, но споткнётся на
Вот что я предложил в письме к internals, которое составил в Сапсане по дороге на Live PHP:
•
• Добавить
• Добавить
Вся проблема в том, что недавно вышел PHP 8.4 RC1, и вносить изменения уже поздно. Надеюсь, что мой посыл про нарушение обратной совместимости всё-таки убедит сделать исключение.
На неделе я начал добавлять поддержку PHP 8.4 в Typhoon Reflection, и очень рад, что взялся за это до релиза.
Во-первых, я зарепортил отсутствие обещанной в RFC хуков константы
ReflectionProperty::IS_VIRTUAL. Но это тривиально, PR уже готов.А вот что меня реально загрузило, так это поведение новых методов
ReflectionProperty::isPrivateSet() и isProtectedSet() из Asymmetric Visibility RFC. Посудите сами:
final class Foo
{
// isPrivateSet() = true 👌
public private(set) mixed $public_private_set;
// isPrivateSet() = false 🤯
private private(set) mixed $private_private_set;
// isPrivateSet() = false 🤯
private mixed $private;
// isProtectedSet() = true 👌
public readonly mixed $public_readonly;
// isProtectedSet() = false 🤯
protected readonly mixed $protected_readonly;
// isProtectedSet() = false 🤯
protected protected(set) readonly mixed $protected_protected_set_readonly;
// isPrivateSet() = false 👌, isProtectedSet() = false 👌
public bool $virtual_no_set_hook { get => true; }
}
Сначала я подумал, что это баг, и создал тикет php-src#16175. Ilija, автор RFC, объяснил, почему так работает. Дело в том, что у свойств с симметричной видимостью отсутствует флаг ассиметричности. Поэтому для
private и private private(set) isPrivateSet() возвращают false, а не true, как было бы логично ожидать. readonly свойства без явного (set) под капотом получают protected (set) (см. "Relationship with readonly" в RFC), поэтому public readonly будет ассиметричным с isProtectedSet() = true, а protected readonly — симметричным с isProtectedSet() = false.Стало понятно, вот только пользоваться такой рефлексией по-прежнему дико неудобно. В API протекли детали реализации, которые, наоборот, должны быть инкапсулированы. Задача рефлексии — предоставить пользователю комфортный способ изучать код, а не продемонстрировать подкапотное устройство языка.
Но это ещё ладно. Сегодня до меня дошло, что в текущем виде рефлексия в PHP 8.4 ломает обратную совместимость! Если раньше проверка
$reflectionProperty->isPublic() гарантировала, что не readonly свойства доступны на запись и чтение из глобального скоупа, то при текущей реализации в 8.4 она будет гарантировать только чтение!
$reflectionProperty = new ReflectionProperty($class, $property);
if ($reflectionProperty->isPublic() && !$reflectionProperty->isReadonly()) {
$object->{$property} = $value;
}
Например, такой код корректно отработает для любых классов в PHP 8.3, но споткнётся на
public private(set) $property в 8.4, потому что isPublic() вернёт true, а запись в свойство бросит ошибку.Вот что я предложил в письме к internals, которое составил в Сапсане по дороге на Live PHP:
•
ReflectionProperty::isPublic(), isProtected() и isPrivate() должны сохранить своё поведение и возвращать true только если свойство симметричное. Для public readonly метод будет возвращать false, потому что под капотом оно асимметричное с protected(set). Да, это сломает обратную совместимость, но не так критично, потому что все библиотеки уже учитывают тот факт, что в readonly нельзя писать из глобального скоупа.• Добавить
ReflectionProperty::isPublicGet(), isProtectedGet() и isPrivateGet(). Они должны возвращать true, если свойство симметрично или асимметрично доступно на чтение.• Добавить
ReflectionProperty::isPublicSet() и поменять поведение isProtectedSet() и isPrivateSet(): они должны возвращать true, если свойство симметрично или асимметрично доступно на запись.Вся проблема в том, что недавно вышел PHP 8.4 RC1, и вносить изменения уже поздно. Надеюсь, что мой посыл про нарушение обратной совместимости всё-таки убедит сделать исключение.
externals.io
Asymmetric visibility Reflection API problems - Externals
#externals - Opening PHP's #internals to the outside
5👍45🤯37🔥14❤1
Forwarded from PHP Fart Time (Pavel Buchnev)
Как вы думаете? Почему этот код рабочий?
Вот ссылка, можете проверить
https://3v4l.org/WZBGM
<?php
https://temporal.io
echo 'Hello, World!';
Вот ссылка, можете проверить
https://3v4l.org/WZBGM
3v4l.org
Online PHP editor | output for WZBGM
Run your php code online; get statistics, vld output and compare output from all versions.
🤔21😁8🔥6🥱1
PHP Fart Time
Как вы думаете? Почему этот код рабочий? <?php https://temporal.io echo 'Hello, World!'; Вот ссылка, можете проверить https://3v4l.org/WZBGM
Ну это, фартаны, известный прикол. А как вы думаете, почему такой код работает?
https://3v4l.org/D40FF
<?php
echo b'Пых';
https://3v4l.org/D40FF
🤯21😁13
Forwarded from PHP Fart Time (Алексей roxblnfk)
Telegram
Пых
Ну это, фартаны, известный прикол. А как вы думаете, почему такой код работает?
<?php
echo b'Пых';
https://3v4l.org/D40FF
<?php
echo b'Пых';
https://3v4l.org/D40FF
Ну, это-то тоже известная штука, Валентин.
А можешь ли ты уместить решение FizzBuzz в 56 байтов? (ранее рекорд был 52 символа, но недавно обновили версию пыхи, и кое какие хаки перестали работать)
https://code.golf/fizz-buzz#php
А можешь ли ты уместить решение FizzBuzz в 56 байтов? (ранее рекорд был 52 символа, но недавно обновили версию пыхи, и кое какие хаки перестали работать)
https://code.golf/fizz-buzz#php
У кого короче, тот и выиграл
© wispoz
PHP Fart Time
Ну, это-то тоже известная штука, Валентин. А можешь ли ты уместить решение FizzBuzz в 56 байтов? (ранее рекорд был 52 символа, но недавно обновили версию пыхи, и кое какие хаки перестали работать) https://code.golf/fizz-buzz#php У кого короче, тот и выиграл…
code.golf
vudaltsov
Code Golf is a game designed to let you show off your code-fu by solving problems in the least number of characters.
🔥19👍5🙈2❤1👏1
Друзья, я задумал провести своими силами митап в Москве!
С меня:
▸ кайфовая площадка на 50 человек в центре города (уже забронирована и оплачена),
▸ бесплатный вход,
▸ трансляция и запись,
▸ пицца.
С вас — крутые доклады. Один уже есть, с него, собственно, всё и началось. Осталось найти ещё два! По ссылке форма для подачи заявки и требования к докладу:
https://forms.gle/HKA6AooDDfG8e6PBA
За пару недель до митапа я опубликую полную информацию о мероприятии и ссылку на онлайн-регистрацию. Пока просто пометьте в календаре, что вечер пятницы 8 ноября у вас занят.
До встречи в оффлайне!
Please open Telegram to view this post
VIEW IN TELEGRAM
Google Docs
Хочу выступить на Пыхапе в Москве!
Привет!
Программный комитет Пыхапа приглашает тебя выступить. Наши пожелания:
Доклад должен быть прямо или косвенно связан с PHP.
Идеальный регламент — 35 минут рассказ и 10 минут ответы на вопросы. Лучше ёмко рассказать, а потом бурно обсудить, чем долго…
Программный комитет Пыхапа приглашает тебя выступить. Наши пожелания:
Доклад должен быть прямо или косвенно связан с PHP.
Идеальный регламент — 35 минут рассказ и 10 минут ответы на вопросы. Лучше ёмко рассказать, а потом бурно обсудить, чем долго…
👍59🔥52🤩7❤1⚡1
Не можешь подступиться к задаче? Сделай из неё инфоповод!
Завтра вместо линча законтрибьютим с вами PHP CS Fixer для моего RFC. Я уже немного разобрался с написанием кастомных фиксеров, но на стриме покажу весь процесс от форка до PR, чтобы получилось полное руководство по предложению изменений в Open Source.
https://youtu.be/8sbJq6b9hNI
Всех жду в
18:30!Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Open Source Цех #1 • PHP CS Fixer для new без скобок
Попробуем в режиме лайв-кодинга законтрибьютить PHP CS Fixer для https://wiki.php.net/rfc/new_without_parentheses.
Подписывайтесь на наши каналы в Telegram:
• Пых https://news.1rj.ru/str/phpyh,
• PHP умирает?! https://news.1rj.ru/str/isPHPdying,
• PHP Digest https://news.1rj.ru/str/phpdigest.
Подписывайтесь на наши каналы в Telegram:
• Пых https://news.1rj.ru/str/phpyh,
• PHP умирает?! https://news.1rj.ru/str/isPHPdying,
• PHP Digest https://news.1rj.ru/str/phpdigest.
10🔥79👍20⚡5❤1
Пых
На этом стриме мы научимся контрибьютить в Open Source, работать с токенами, писать код по TDD и, конечно, опускать скобки в new выражениях!
Я уже в эфире, присоединяйтесь!
https://youtu.be/8sbJq6b9hNI
Получилось офигенно! Спасибо всем огромное.
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Open Source Цех #1 • PHP CS Fixer для new без скобок
Попробуем в режиме лайв-кодинга законтрибьютить PHP CS Fixer для https://wiki.php.net/rfc/new_without_parentheses.
Подписывайтесь на наши каналы в Telegram:
• Пых https://news.1rj.ru/str/phpyh,
• PHP умирает?! https://news.1rj.ru/str/isPHPdying,
• PHP Digest https://news.1rj.ru/str/phpdigest.
Подписывайтесь на наши каналы в Telegram:
• Пых https://news.1rj.ru/str/phpyh,
• PHP умирает?! https://news.1rj.ru/str/isPHPdying,
• PHP Digest https://news.1rj.ru/str/phpdigest.
🥰18🔥16👀5❤3👍1
Недавно пообщались с Кириллом Мокевниным, сооснователем школы Хекслет и автором канала Организованное программирование, про наш с вами любимый PHP. Коснулись множества технических и гуманитарных тем от PSR и RoadRunner до экосистемы и сообщества. Надеюсь, вы так же кайфанёте от просмотра, как мы с Кириллом от записи.
https://youtu.be/1XAbFkMaWxw
https://vk.com/video-224967259_456239053
https://podcast.ru/1734325321
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Какое будущее ждет PHP? / Валентин Удальцов / Организованное программирование / #14
В этом выпуске мы вместе с Валентином Удальцовым, автором канала Пых в Telegram, обсуждаем PHP (тот самый язык программирования, про который говорят, что он умирает, а на нём 80% сайтов до сих пор написано). Поговорим про весь путь его развития — от старых…
👍42🔥20❤5💯1
Следующая версия PHP — 8.5
Если кто-то вдруг, как и я, полагал, что четвёртый минорный релиз будет последним для PHP 8 (по аналогии с PHP 7), то это не так. В ноябре следующего года ожидается PHP 8.5. Насчёт 9.0 нет никакой информации.
Мне это вчера подсветил Рома Пронский. Пруфы в переписках internals и в свежих RFC:
▸ https://externals.io/message/125667
▸ https://wiki.php.net/rfc/deprecations_php_8_5
Если кто-то вдруг, как и я, полагал, что четвёртый минорный релиз будет последним для PHP 8 (по аналогии с PHP 7), то это не так. В ноябре следующего года ожидается PHP 8.5. Насчёт 9.0 нет никакой информации.
Мне это вчера подсветил Рома Пронский. Пруфы в переписках internals и в свежих RFC:
▸ https://externals.io/message/125667
▸ https://wiki.php.net/rfc/deprecations_php_8_5
externals.io
PHP 8.4 forked - Externals
#externals - Opening PHP's #internals to the outside
👍54🤔12🔥10❤5😱2
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
PHP-линч #24 • type-lang/mapper
Внимание! Чтобы YouTube опубликовал ваш комментарий, пишите не полный URL, а, например, symfony/console.
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш…
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш…
👍20🔥9❤2🫡2
Пых
Относительные имена
Если вы вдруг не знали, в PHP можно использовать
Вот пруф с 3v4l + на линче я подробно показал аналогичный пример. Также рекомендую прочитать статью документации про правила разрешения неймспейсов.
👾 Флешмоб!
Если у вас в ближайшее время возникнет ситуация, когда будет нужно использовать
Если вы вдруг не знали, в PHP можно использовать
namespace\, чтобы явно подставить текущий неймспейс в имя. Это альтернатива алиасам при наличии конфликта имён:
namespace Foo;
use Bar\Baz;
echo namespace\Baz; // выведет Foo\Baz
Вот пруф с 3v4l + на линче я подробно показал аналогичный пример. Также рекомендую прочитать статью документации про правила разрешения неймспейсов.
Если у вас в ближайшее время возникнет ситуация, когда будет нужно использовать
X из текущего неймспейса при наличии импорта X из другого неймспейса, напишите namespace\X вместо рефакторинга на алиас. В комментариях к посту поделитесь, заметили ли коллеги на ревью вашу шалость и пустили ли её в прод.Please open Telegram to view this post
VIEW IN TELEGRAM
3v4l.org
Online PHP editor | output for JJ9XT
Run your php code online; get statistics, vld output and compare output from all versions.
👍48🔥16🤡11
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
PHP-линч #25 • yiisoft/mailer
Внимание! Чтобы YouTube опубликовал ваш комментарий, пишите не полный URL, а, например, symfony/console.
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш…
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш…
👍18🔥11👀3🥱1
Пыхап 8 ноября!
Друзья, ровно через 2 недели пройдёт первый в истории митап от канала Пых! В программе у нас 3 хардкорных доклада:
🤯 (Не) используйте функциональное программирование в PHP
Андрей Клименко поломает вам голову основами ФП и примерами на Scala, из которых станет понятно, что из функционального мира уже доступно в PHP, а что ещё предстоит законтрибьютить.
🐇 Вы не знаете RabbitMQ
Вадим Занфир расскажет, почему все современные фреймворки теряют сообщения и как на самом деле надо работать с "кроликом".
🤑 Как считать деньги и не терять их
В аду есть специальный котёл для тех, кто использует
Спонсор первого Пыхапа — моя любимая компания Happy Job 💚, где я проработал 4 года! Обращайтесь в Happy Job за исследованиями вовлечённости и оценкой 360, ребята делают лучшую платформу для развития сотрудников.
Пыхап пройдёт в уютном лофте «Событие» на Таганке, начало в 18:30. Вход бесплатный, но по билетам. Регистрация откроется на канале Пых в ближайший понедельник в 15:00, не пропустите. Ну и конечно же митап будет транслироваться на PHP Point с записью.
Друзья, ровно через 2 недели пройдёт первый в истории митап от канала Пых! В программе у нас 3 хардкорных доклада:
Андрей Клименко поломает вам голову основами ФП и примерами на Scala, из которых станет понятно, что из функционального мира уже доступно в PHP, а что ещё предстоит законтрибьютить.
Вадим Занфир расскажет, почему все современные фреймворки теряют сообщения и как на самом деле надо работать с "кроликом".
В аду есть специальный котёл для тех, кто использует
float для хранения денег. Сергей Жук подскажет, как в него не угодить.Спонсор первого Пыхапа — моя любимая компания Happy Job 💚, где я проработал 4 года! Обращайтесь в Happy Job за исследованиями вовлечённости и оценкой 360, ребята делают лучшую платформу для развития сотрудников.
Пыхап пройдёт в уютном лофте «Событие» на Таганке, начало в 18:30. Вход бесплатный, но по билетам. Регистрация откроется на канале Пых в ближайший понедельник в 15:00, не пропустите. Ну и конечно же митап будет транслироваться на PHP Point с записью.
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥98👍40❤8🆒3
Пых
Пыхап 8 ноября! Друзья, ровно через 2 недели пройдёт первый в истории митап от канала Пых! В программе у нас 3 хардкорных доклада: 🤯 (Не) используйте функциональное программирование в PHP Андрей Клименко поломает вам голову основами ФП и примерами на Scala…
Регистрация на Пыхап 8 ноября
https://phpyh.timepad.ru/event/3071538/
Все 50 билетов разлетелись за 15 минут, очень приятно!
https://phpyh.timepad.ru/event/3071538/
Все 50 билетов разлетелись за 15 минут, очень приятно!
phpyh.timepad.ru
Пыхап #1 / 8 ноября 2024 / События на TimePad.ru
Пишешь на PHP? Приходи на первый митап от автора канала «Пых»! В программе 3 хардкорных доклада, пицца driven общение и уютная атмосфера лофта «Событие» в центре Москвы.
👍16🔥13👏6
Пару недель назад мы с Кириллом обсуждали PHP. Выяснилось, что он накануне имел дело с Laravel и, цитирую, "увидел очень много косяков". Фартан Алексей не мог пройти мимо такого инфоповода и предложил крутой состав для стрима:
▸ Кирилл Мокевнин подсветит проблемы Laravel,
▸ Данил Щуцкий встанет на защиту Тейлора,
▸ Алексей Гагарин расскажет, что в Spiral всё сделано в 100 раз лучше.
Встречаемся в этот четверг в
19:00 по Москве! Жмите в колокол, чтобы не пропустить.https://youtu.be/KpSfWe7XS3A
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥103👍16❤5🤝2
Участники третьего сезона:
https://youtu.be/Sw2CRO7kTbQ
Начало через 50 минут, не пропустите!
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Своя игра от CutCode. Третий выпуск викторины по PHP
Готовьтесь к необычному испытанию знаний и заряду хорошим настроением! В 20:00 (мск) 30 октября на YouTube-канале CutCode стартует игра-викторина в стиле “Своей игры”
Приготовьтесь к захватывающим раундам, юмору и увлекательным заданиям, которые проверят…
Приготовьтесь к захватывающим раундам, юмору и увлекательным заданиям, которые проверят…
❤14👍11🔥7
Пых
Мы начинаем!
https://youtu.be/KpSfWe7XS3A
Please open Telegram to view this post
VIEW IN TELEGRAM
🤣44🔥17👍5❤1🤔1