https://t.me/tg_5minphp/1165
Для меня неожиданно тут только то, что кто-то использует Symfony Container вне Symfony.
Мы с @butschster уже бенчили контейнеры и Yiisoft/di уверенно держится в ТОП 2 — в 2.5 раз быстрее, чем у Laravel по автовайрингу и доставанию из кеша.
PHP-DI в 3.5 раза быстрее контейнера Laravel.
> Стоит посоветовать ему Yii3 DI?
Не стоит. Вот его ответ на эту тему:
> While performance is criteria, so it the community, so they can contribute this package without learning a new framework. So Symfony/Laravel are the only options today.
Томас уже прибухнул с Тейлором и теперь он один из тех чуваков на картинке выше :)
PS: @petrmyazin когда уже сделаешь комментарии к каналу?
Для меня неожиданно тут только то, что кто-то использует Symfony Container вне Symfony.
Мы с @butschster уже бенчили контейнеры и Yiisoft/di уверенно держится в ТОП 2 — в 2.5 раз быстрее, чем у Laravel по автовайрингу и доставанию из кеша.
PHP-DI в 3.5 раза быстрее контейнера Laravel.
> Стоит посоветовать ему Yii3 DI?
Не стоит. Вот его ответ на эту тему:
> While performance is criteria, so it the community, so they can contribute this package without learning a new framework. So Symfony/Laravel are the only options today.
Томас уже прибухнул с Тейлором и теперь он один из тех чуваков на картинке выше :)
PS: @petrmyazin когда уже сделаешь комментарии к каналу?
Telegram
Пятиминутка PHP
Интересная статья: автор переводит проект Easy Coding Standards с Symfony DI на контейнер от Laravel! Неожиданно, да?
Подробно пишет о причинах и технических деталях:
https://tomasvotruba.com/blog/experiment-how-i-replaced-symfony-di-with-laravel-container…
Подробно пишет о причинах и технических деталях:
https://tomasvotruba.com/blog/experiment-how-i-replaced-symfony-di-with-laravel-container…
#Article
Написал длиннопост, который не влез в формат телеги и телеграфа.
⚠️ Алерт: там много англицизмов.
Читать на гитхабе: Cycle ORM до связей жадный
Надеюсь факт наличия сего писания сведёт к забвению и зарастанию тропы, ведущей к одним и тем же граблям, на которые я наступаю уже далеко не первый раз, но о которых постоянно забываю.
Написал длиннопост, который не влез в формат телеги и телеграфа.
⚠️ Алерт: там много англицизмов.
Читать на гитхабе: Cycle ORM до связей жадный
Надеюсь факт наличия сего писания сведёт к забвению и зарастанию тропы, ведущей к одним и тем же граблям, на которые я наступаю уже далеко не первый раз, но о которых постоянно забываю.
Привет, фартаны!
Мы вернулись к истокам и записали видосик.
За последние полгода Buggregator Server круто прорефакторился 💪, поэтому напомнить о нём будет не лишним.
https://youtu.be/qsDIHwS58Q4
Мы вернулись к истокам и записали видосик.
За последние полгода Buggregator Server круто прорефакторился 💪, поэтому напомнить о нём будет не лишним.
https://youtu.be/qsDIHwS58Q4
YouTube
В этом стриме мы обсуждаем Buggregator и дебаг PHP приложений
Рассуждаем о том, что в неумиращих приложениях не всегда можно дебажить xdebug'ом.
Тыкаем мнтерфейс Buggregator, смотрим дампы в консоль с помощью symfony/var-dumper-server и Buggregator/Trap.
Включайтесь в OpenSource — мы приветствуем любую помощь.
Ссылки…
Тыкаем мнтерфейс Buggregator, смотрим дампы в консоль с помощью symfony/var-dumper-server и Buggregator/Trap.
Включайтесь в OpenSource — мы приветствуем любую помощь.
Ссылки…
PHP Fart Time
Привет, фартаны! Мы вернулись к истокам и записали видосик. За последние полгода Buggregator Server круто прорефакторился 💪, поэтому напомнить о нём будет не лишним. https://youtu.be/qsDIHwS58Q4
MOSHED-2023-8-8-0-11-49.gif
15.9 MB
А ещё мы релизнули пакет
Написано на PHP с любовью и файберами🧵
Залетайте хейтить и рефакторить код! Предлагайте идеи. Например, отличная идея - добавить поддержку MQTT протокола - если тоже пилите умный дом и вам актуально - поставьте эмоджу.
Кстати, почему там ещё нет предложения добавить команду
#Buggregator
buggregator/trap
, который поможет дампать protobuf объекты. Эта утилита умеет ловить любой трафик и даже почту, а ещё у неё есть все шансы стать шлюзом к Buggregator Cloud.Написано на PHP с любовью и файберами🧵
Залетайте хейтить и рефакторить код! Предлагайте идеи. Например, отличная идея - добавить поддержку MQTT протокола - если тоже пилите умный дом и вам актуально - поставьте эмоджу.
Кстати, почему там ещё нет предложения добавить команду
trap fart
?#Buggregator
gRPC и protobuf
В этом стриме мы:
- Призвали мейнтейнера RoadRunner и гуру Golang/Rust Валеру
- Обсудили gRPC и protobuf, особенности работы с ними на PHP.
- Показыли, как сделать сгенерированные из protobuf классы не такими всратыми.
- Обозрели Buf и продемонстрировали его применение.
https://youtu.be/E61resEfgUE
В этом стриме мы:
- Призвали мейнтейнера RoadRunner и гуру Golang/Rust Валеру
- Обсудили gRPC и protobuf, особенности работы с ними на PHP.
- Показыли, как сделать сгенерированные из protobuf классы не такими всратыми.
- Обозрели Buf и продемонстрировали его применение.
https://youtu.be/E61resEfgUE
YouTube
Все, что нужно знать о работе с gRPC в PHP: Гид для разработчиков
Присоединяйтесь к нашему пошаговому обучающему стриму, где мы обсуждаем, углубленное использование gRPC с PHP. Мы рассказываем о том, что это такое, его особенности работы, и как с ним работать в PHP.
00:00 - Начинаем стрим
2:30 - Гость rustatian
12:45…
00:00 - Начинаем стрим
2:30 - Гость rustatian
12:45…
Через полтора часа стрим!
На этот раз прямо в ютубчик и под пиво.
Присоединяйтесь. Поговорим про RoadRunner.
https://www.youtube.com/live/3WdSCnzsFKE?si=aB3TeAGj_19ixsxK
На этот раз прямо в ютубчик и под пиво.
Присоединяйтесь. Поговорим про RoadRunner.
https://www.youtube.com/live/3WdSCnzsFKE?si=aB3TeAGj_19ixsxK
Начинаем спонтанный стримчик
https://youtu.be/TG_XgyKHt10
https://youtu.be/TG_XgyKHt10
YouTube
Разрабатываем Temporal Workflow на PHP для заказа пиццы
Лайвкодим приготовление пиццы на PHP.
В этом видео-цикле рассмотрим написание кода с использованием Temporal на примере пиццерии.
Репозиторий проекта: https://github.com/php-fart/order-pizza
Ссылка на наш дискорд, где мы проводим стримы и где можно с нами…
В этом видео-цикле рассмотрим написание кода с использованием Temporal на примере пиццерии.
Репозиторий проекта: https://github.com/php-fart/order-pizza
Ссылка на наш дискорд, где мы проводим стримы и где можно с нами…
#Article #Типизация #php
Всем нравятся Constructor Property Promotion, не так ли?
☝️ эти фрагменты кода эквивалентны 👇
Но не эквивалентны этому:
Разница в наличии значений по умолчанию у свойств.
Теперь попробуем создать объекты из обоих вариантов через рефлексию без использования конструктора.
https://3v4l.org/0tLcM
Если у свойства нет значения по умолчанию, то оно будет неинициализированным.
Такой способ создания объектов в обход конструктора широко используется под капотом многих библиотек, не только тех, которые используют
И иногда это стоит учитывать при работе с классами, которые будут проходить через гидрацию или демаршализацию. У меня такое уже выстреливало 😳.
А если ты счастливый пользователь Cycle ORM, то я рекомендую вообще закрывать конструкторы сущностей (делать пустой приватный конструктор) и вместо этого писать фабрики.
Всем нравятся Constructor Property Promotion, не так ли?
final class Foo {
public function __construct(
public bool $bar = false,
public array $baz = [],
) { }
}
☝️ эти фрагменты кода эквивалентны 👇
final class Foo {
public bool $bar;
public array $baz;
public function __construct(
bool $bar = false,
array $baz = [],
) {
$this->bar = $bar;
$this->baz = $baz;
}
}
Но не эквивалентны этому:
final class Foo {
public bool $bar = false;
public array $baz = [];
public function __construct(
bool $bar = false,
array $baz = [],
) {
$this->bar = $bar;
$this->baz = $baz;
}
}
Разница в наличии значений по умолчанию у свойств.
Теперь попробуем создать объекты из обоих вариантов через рефлексию без использования конструктора.
https://3v4l.org/0tLcM
object(Foo)#3 (0) { ["bar"]=> uninitialized(bool) ["baz"]=> uninitialized(array) }
object(Foo)#3 (2) { ["bar"]=> bool(false) ["baz"]=> array(0) { } }
Если у свойства нет значения по умолчанию, то оно будет неинициализированным.
Такой способ создания объектов в обход конструктора широко используется под капотом многих библиотек, не только тех, которые используют
doctrine/instantiator
.И иногда это стоит учитывать при работе с классами, которые будут проходить через гидрацию или демаршализацию. У меня такое уже выстреливало 😳.
А если ты счастливый пользователь Cycle ORM, то я рекомендую вообще закрывать конструкторы сущностей (делать пустой приватный конструктор) и вместо этого писать фабрики.
#ВредныеСоветы #Типизация #php
Как сломать типизацию:
https://3v4l.org/nTogS
Как сломать
https://3v4l.org/gSWFF
Также не забываем про пакет
Что там ещё нам мешает писать код по своим правилам?
Как сломать типизацию:
https://3v4l.org/nTogS
Как сломать
readonly
(и типизацию):https://3v4l.org/gSWFF
Также не забываем про пакет
unfinalize
.Что там ещё нам мешает писать код по своим правилам?
3v4l.org
Online PHP editor | output for nTogS
Run your php code online; get statistics, vld output and compare output from all versions.
Please open Telegram to view this post
VIEW IN TELEGRAM
Мы заскедулили стримчик про скедулинг. Приходите и, не отрывая руку от лица, задавайте вопросы.
https://www.youtube.com/live/4VaEy1h3hpo?si=n8cuhWee2qMEq3vx
https://www.youtube.com/live/4VaEy1h3hpo?si=n8cuhWee2qMEq3vx
YouTube
Распределенное планирование Cron заданий: Обзор Temporal Scheduler и сравнение с Laravel
Присоединяйтесь к нам в этом стриме, где мы будем говорить о различных методах планирования заданий, с ориентиром на Laravel и Temporal Scheduler. Вот подробности нашего расписания:
00:00 - Начинаем стрим
00:35 - Вступление
1:25 - Laravel scheduler
16:40…
00:00 - Начинаем стрим
00:35 - Вступление
1:25 - Laravel scheduler
16:40…
Тоже накину про инициативу Валентина Удальцова по поводу
Я считаю, что это изменение было бы к лучшему.
Да, это не привычно, да можно сделать статический метод
Но:
- Скорее всего вы сами по-началу плевались на эти скобочки. А кто-то плюётся и сейчас, прыгая между стеками.
- Статические конструкторы - прекрасно, когда есть несколько путей создания объекта (
- Насколько я понимаю, тут нет никакого слома обратной совместимости и всё, что работало, продолжит работать.
Но самый важный для меня поинт — у меня на клавиатуре уже клавиша открывающей скобки начала барахлить. Давайте уже поскорее избавимся от этого скобочного зла 🔥
Если Валентин инициативу дожмёт - будет мега-круто. Я свою не дожал 🫤
Дискуссии:
• PR на GitHub
• Пост в канале Пых
• Пост в канале Предводителев
• Обсуждение в X
new MyClass()->method()
без скобок.Я считаю, что это изменение было бы к лучшему.
Да, это не привычно, да можно сделать статический метод
MyClass::new()
, который потом приятно выглядит в fluent вызовах MyClass::new()->method()
.Но:
- Скорее всего вы сами по-началу плевались на эти скобочки. А кто-то плюётся и сейчас, прыгая между стеками.
- Статические конструкторы - прекрасно, когда есть несколько путей создания объекта (
fromFile(File $file)
, fromString(string $data)
). Но когда мы описываем класс DTO, то на кой нам эти статические конструкторы? DTOшек много. А ещё на каждый статический конструктор придётся дублировать параметры с конструктора вместе с их описанием!- Насколько я понимаю, тут нет никакого слома обратной совместимости и всё, что работало, продолжит работать.
Но самый важный для меня поинт — у меня на клавиатуре уже клавиша открывающей скобки начала барахлить. Давайте уже поскорее избавимся от этого скобочного зла 🔥
Если Валентин инициативу дожмёт - будет мега-круто. Я свою не дожал 🫤
Дискуссии:
• PR на GitHub
• Пост в канале Пых
• Пост в канале Предводителев
• Обсуждение в X
GitHub
new MyClass()->method() without parentheses by vudaltsov · Pull Request #13029 · php/php-src
This PR allows to immediately access newly created object without parentheses.
class Request implements Psr\Http\Message\RequestInterface
{
// ...
}
// BEFORE
$request = (new Request())-&g...
class Request implements Psr\Http\Message\RequestInterface
{
// ...
}
// BEFORE
$request = (new Request())-&g...
Записали стрим по атрибутам.
Мы их используем давно и везде - во фреймворке, в пет-проектах и на продуктах. А вы?
Из того, что забыли сказать:
1. Есть пакет
2. С наступающим Новым Годом!
Мы их используем давно и везде - во фреймворке, в пет-проектах и на продуктах. А вы?
Из того, что забыли сказать:
1. Есть пакет
spiral/attributes
, который раньше использовался для чтения атрибутов и аннотаций через единый интерфейс. Раньше он был очень актуален, а в версии пакета 2.х парсинг атрибутов работал даже на PHP 7.4 (хотя атрибуты появились только в PHP 8). spiral/attributes
был хорошим помощником в переходный период с аннотаций на атрибуты, но сейчас, с отказом от аннотаций, он становится немного неактуальным и требует пересмотра концепции. Поэтому, отвечая на запрос втора канала Хэндлим тему, говорю, что производить сравнения spiral/attributes
с либами типа этой было бы некорректно — слишком уж разные.2. С наступающим Новым Годом!
YouTube
Глубокое погружение в PHP Attributes: Все, что нужно знать
🔥 Присоединяйтесь к нашему стриму, где мы освещаем все аспекты PHP Attributes! Разберем от базового использования до продвинутых техник в реальных приложениях.
00:00 - Начинаем стрим
00:25 - Приветствие
02:10 - Вступление
05:00 - Как выглядят атрибуты
06:50…
00:00 - Начинаем стрим
00:25 - Приветствие
02:10 - Вступление
05:00 - Как выглядят атрибуты
06:50…
Привет, фартаны!
Закончился 2023 год, начался 2024.
Пришла пора оглянуться назад и посмотреть на проделанную работу, а заодно расставить таймкоды.
📽 Все про PHP attributes
📽 Distributed Cron scheduling
📽 Создаем простой чат с использованием Spiral Framework, RoadRunner и Centrifugo WS сервер и VueJs
📽 Что такое RoadRunner app server и для чего он нужен PHP
📽 Как работать с gRPC в PHP
📽 Пишем простой Temporal workflow
С Новым Годом! Говорят, он будет хуже, чем предыдущие, но последним (правда не говорят, в каком смысле).
Пишите в комментариях, что бы вы хотели увидеть в следующем стриме.
Закончился 2023 год, начался 2024.
Пришла пора оглянуться назад и посмотреть на проделанную работу, а заодно расставить таймкоды.
📽 Все про PHP attributes
📽 Distributed Cron scheduling
📽 Создаем простой чат с использованием Spiral Framework, RoadRunner и Centrifugo WS сервер и VueJs
📽 Что такое RoadRunner app server и для чего он нужен PHP
📽 Как работать с gRPC в PHP
📽 Пишем простой Temporal workflow
С Новым Годом! Говорят, он будет хуже, чем предыдущие, но последним (правда не говорят, в каком смысле).
Пишите в комментариях, что бы вы хотели увидеть в следующем стриме.
Привет, фартаны!
Вот и подведён итог 2023 года в PHP RU сообществе.
Что тут сказать? Такой сокрушительной победы мы и не ожидали! Спасибо за поддержку и внимание 🥳
https://t.me/tg_5minphp/1299
Вот и подведён итог 2023 года в PHP RU сообществе.
Что тут сказать? Такой сокрушительной победы мы и не ожидали! Спасибо за поддержку и внимание 🥳
https://t.me/tg_5minphp/1299
Пинг.
Скоро выйдет Temporal PHP SDK с новой крутой фичей - Workflow Update. К релизу стоит задача не только завершить код в SDK и доку, но и подготовить примеры.
А ещё я купил себе новую клаву, чтобы не добивать родную у ноутбука. Keychron K2 в очень классной комплектации. Это механика с блютузом и подсветкой, достаточно тихая, приятная в работе и тяжёлая (а значит надёжная).
При этом, я думаю, многим из вас нравятся настолки в той или иной мере. Кости в ведьмаке тоже считаются.
В общем, пора кодить. Задача - сделать игру Zonk на Temporal с использованием новой фичи Workflow Update.
👇👇👇
Go live!
Скоро выйдет Temporal PHP SDK с новой крутой фичей - Workflow Update. К релизу стоит задача не только завершить код в SDK и доку, но и подготовить примеры.
А ещё я купил себе новую клаву, чтобы не добивать родную у ноутбука. Keychron K2 в очень классной комплектации. Это механика с блютузом и подсветкой, достаточно тихая, приятная в работе и тяжёлая (а значит надёжная).
При этом, я думаю, многим из вас нравятся настолки в той или иной мере. Кости в ведьмаке тоже считаются.
В общем, пора кодить. Задача - сделать игру Zonk на Temporal с использованием новой фичи Workflow Update.
👇👇👇
Go live!
Привет, Это FartTimer!
📺 У нас опубликован новое видео.
Это запись спонтанного стрима на твиче. Этакий концентрат информации про Temporal, RoadRunner, интерцепторы и что-то там ещё на 4 часа.
https://youtu.be/AIwZAXXcYEY?si=h-U1qfP0SJSTPWPw
📺 У нас опубликован новое видео.
Это запись спонтанного стрима на твиче. Этакий концентрат информации про Temporal, RoadRunner, интерцепторы и что-то там ещё на 4 часа.
https://youtu.be/AIwZAXXcYEY?si=h-U1qfP0SJSTPWPw
YouTube
Про Temporal, RoadRunner, Buggregator, Centrifugo, Spiral и др. [ЗАПИСЬ СТРИМА]
Exploring Temporal, RoadRunner, Buggregator, Centrifugo, Spiral and More [STREAM RECORDING]
Tune in for an in-depth exploration of cutting-edge development technologies like Temporal, RoadRunner, Buggregator, Centrifugo, and Spiral. This recorded stream…
Tune in for an in-depth exploration of cutting-edge development technologies like Temporal, RoadRunner, Buggregator, Centrifugo, and Spiral. This recorded stream…
🪼 А чтобы не приходилось скучать в ожидании нового видео, напоминаю, что скоро будет проходить проплывать Podlodka PHP. Погружение на тему "Работа с базой данных".
Подробнее о конференции тут https://podlodka.io/phpcrew
Скоро разыграем одну подарочную проходку, когда придумаем конкурс. Может у вас есть идеи?
Увидимся на подлодке🫡
Подробнее о конференции тут https://podlodka.io/phpcrew
Скоро разыграем одну подарочную проходку, когда придумаем конкурс. Может у вас есть идеи?
Увидимся на подлодке
Please open Telegram to view this post
VIEW IN TELEGRAM