PHP: PHP-линч #10 • myclabs/deep-copy • чистая архитектура - видео HD
01:38:21
Обнаружено блокирование рекламы на сайте
Для существования нашего сайта необходим показ рекламы. Просим отнестись с пониманием и добавить сайт в список исключений вашей программы для блокировки рекламы (AdBlock и другие).
12n.ru 18463 ролика
1794 просмотра на сайте 12n.ru
PHP-линч #10 • myclabs/deep-copy • чистая архитектура - видео.
0:00 Двойное приветствие
0:55 Новости по PHP Extended Type System
2:15 Судьба стула-седла
5:46 Паттерн Mixin vs Visitor
10:20 Про пианино и барабаны
11:14 Ролик про мемоизацию на Boosty (https://boosty.to/phpyh/posts/c4ba0a19-cfa2-41ec-903b-ede36fd5d28a)
12:57 Линч myclabs/deep-copy
50:10 snake_case для методов тестов
51:30 Выясняем, когда появилось ключевое слово final
55:25 Как я писал пост про кэш (https://t.me/phpyh/378)
59:27 Как замерять стоимость кэшируемой операции
1:05:50 Чистая архитектура, набрасываю код UI | Business Rule | DB
1:17:34 Про __invoke в хэндлерах
1:18:51 Исключения, ивенты и ретраи в контексте асинхронных команд
1:22:23 По слоям или по фичам?
1:24:21 get/find и nullable возвращаемый тип в репозиториях
1:29:13 Кто должен задавать previous в Exception
1:30:46 У меня подгорает от микрофреймворков для микросервисов
1:37:41 Закругляемся!
Внимание! Чтобы YouTube опубликовал ваш комментарий, пишите не полный URL, а, например, гитхаб/symfony/console.
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш пет-проект или библиотека, а может быть компонент (не)известного фреймворка. Заранее ссылки не принимаются.
2. Я выбираю проект по душе и клонирую репозиторий.
3. Комментирую на лету, говорю, что думаю, без обид.
Все линчи всегда записываются, так что не переживайте, если не успеваете присоединиться в процессе.
Подписывайтесь на наши каналы в Telegram:
• Пых t.me/phpyh,
• PHP Digest t.me/phpdigest,
• PHP умирает?! t.me/isPHPdying.
Поддержите канал на Boosty: boosty.to/phpyh.
0:55 Новости по PHP Extended Type System
2:15 Судьба стула-седла
5:46 Паттерн Mixin vs Visitor
10:20 Про пианино и барабаны
11:14 Ролик про мемоизацию на Boosty (https://boosty.to/phpyh/posts/c4ba0a19-cfa2-41ec-903b-ede36fd5d28a)
12:57 Линч myclabs/deep-copy
50:10 snake_case для методов тестов
51:30 Выясняем, когда появилось ключевое слово final
55:25 Как я писал пост про кэш (https://t.me/phpyh/378)
59:27 Как замерять стоимость кэшируемой операции
1:05:50 Чистая архитектура, набрасываю код UI | Business Rule | DB
1:17:34 Про __invoke в хэндлерах
1:18:51 Исключения, ивенты и ретраи в контексте асинхронных команд
1:22:23 По слоям или по фичам?
1:24:21 get/find и nullable возвращаемый тип в репозиториях
1:29:13 Кто должен задавать previous в Exception
1:30:46 У меня подгорает от микрофреймворков для микросервисов
1:37:41 Закругляемся!
Внимание! Чтобы YouTube опубликовал ваш комментарий, пишите не полный URL, а, например, гитхаб/symfony/console.
Как устроен PHP-линч:
1. Во время стрима вы скидываете в чат трансляции ссылки на репозитории и в трёх словах описываете, что там. Это может быть ваш пет-проект или библиотека, а может быть компонент (не)известного фреймворка. Заранее ссылки не принимаются.
2. Я выбираю проект по душе и клонирую репозиторий.
3. Комментирую на лету, говорю, что думаю, без обид.
Все линчи всегда записываются, так что не переживайте, если не успеваете присоединиться в процессе.
Подписывайтесь на наши каналы в Telegram:
• Пых t.me/phpyh,
• PHP Digest t.me/phpdigest,
• PHP умирает?! t.me/isPHPdying.
Поддержите канал на Boosty: boosty.to/phpyh.
развернуть свернуть
Предположим такую ситуацию, что есть сервис Order\PlaceOrder, который вызывает другой сервис Warehouse\BookGoods. И для наглядности эти сервисы лежат в разных фичах. Сервис BookGoods может выбросить исключение Warehouse\Exception\NotEnoughGoods.
Данное исключение ловится сервисом PlaceOrder. Но так как каждая фича должна бросить свои исключения (по крайней мере я так щитаю) то Order\PlaceOrder должен обернуть пойманное исключение от другого сервиса — throw Order\Exception\CanNotPlaceOrder::due($warehouseException). Таким образом финальное исключение содержит предшествующее. Но встаёт вопрос — как вывести сообщение данного исключения в логах, письме, смс или где угодно.
И вопрос заключается в следующем. Должно ли сообщение в CanNotPlaceOrder содержать конкатенацию из своего сообщения и предыдущего или же сам логер/нотификатор (или тот кто обрабатывает ислюкчение) должен пройтись по всем previous и собрать результирующую строку?
Небольшая практика golang и опыт работы с пыхом подсказывают что само сообщение должно относить только к своему домену. То есть, сообщение CanNotPlaceOrder должно быть только вида «Can not place an order». Но если мне нужно развернуть всю цепочку то сам логер должен пройтись по всем предыдущим вариантам и собрать результирующую строку вида «Can not place an order: Warehouse is unreachable».
ЗЫ. Линчи всё длиннее! Это радует.
igbinary_unserialize(igbinary_serialize($obj))