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
🎟Розыгрыш билета на подлодку
Закидывайте в этот тред мемы про Buggregator, Temporal, RoadRunner, Spiral, Bitrix, Wordpress, релиз Yii3, Валентина и трейты, PHP, пыхо-тренды и всё остальное на тему PHP.
Автор, субъективно набравший меньше 💩 или больше позитивных реакций, получит приглашение на подлодку.
⚠️ *Важно: авторские мемы участвуют в розыгрыше, а честно перепощенные просто приветствуются.*
Автор лучшего перепощенного мема получит лицензию на Buggregator.
Закидывайте в этот тред мемы про Buggregator, Temporal, RoadRunner, Spiral, Bitrix, Wordpress, релиз Yii3, Валентина и трейты, PHP, пыхо-тренды и всё остальное на тему PHP.
Автор, субъективно набравший меньше 💩 или больше позитивных реакций, получит приглашение на подлодку.
⚠️ *Важно: авторские мемы участвуют в розыгрыше, а честно перепощенные просто приветствуются.*
Автор лучшего перепощенного мема получит лицензию на Buggregator.
Подводим итоги конкурса из поста выше
Лучший мем: https://t.me/php_fart/61?comment=325
Автор мема заслуженно получает промокод на подлодку: (вводить после нажатия кнопки КУПИТЬ )
Поздравляем победителя! 🎉🎉🎉
🍾🍾 Второе место вычислить нереально, поэтому лицензию на багри получают все 🍾🍾
Забрать можно в этом репозитории https://github.com/buggregator/server или через докер (Документация)
Или через композер
Лучший мем: https://t.me/php_fart/61?comment=325
Автор мема заслуженно получает промокод на подлодку:
01000110010000010101001001010100
Поздравляем победителя! 🎉🎉🎉
🍾🍾 Второе место вычислить нереально, поэтому лицензию на багри получают все 🍾🍾
Забрать можно в этом репозитории https://github.com/buggregator/server или через докер (Документация)
docker run --rm --pull always -p 127.0.0.1:8000:8000 -p 127.0.0.1:1025:1025 -p 127.0.0.1:9912:9912 -p 127.0.0.1:9913:9913 ghcr.io/buggregator/server:latest
Или через композер
composer req --dev buggregator/trap
Telegram
... in PHP Fart Time Chat
В блоге Виктора (который из Yii 3 Core) вышла позитивная заметка про Buggregator.
Получать обратную связь — хорошо. А получать хорошую обратную связь — ещё лучше.
Вы используете Buggregator? Поделитесь в комментариях обратной связью 💖
Напишите, как используете, чего не хватает, на что сделать упор.
Хотели бы, чтобы мы писали здесь о багри больше (не маркетинговый буллшит, а про фичи, кейсы, размышления и прочее)? — если да — ставьте🖼️
Получать обратную связь — хорошо. А получать хорошую обратную связь — ещё лучше.
Вы используете Buggregator? Поделитесь в комментариях обратной связью 💖
Напишите, как используете, чего не хватает, на что сделать упор.
Хотели бы, чтобы мы писали здесь о багри больше (не маркетинговый буллшит, а про фичи, кейсы, размышления и прочее)? — если да — ставьте
Please open Telegram to view this post
VIEW IN TELEGRAM
Telegram
Viktorprogger
Профайлинг с XHProf | #development #php #profiling #xhprof
Некоторое время назад я сравнивал различные профайлеры: надо посмотреть, что сколько времени кушает именно на проде. Остановился на XHProf по нескольким причинам: это бесплатное self hosted решение…
Некоторое время назад я сравнивал различные профайлеры: надо посмотреть, что сколько времени кушает именно на проде. Остановился на XHProf по нескольким причинам: это бесплатное self hosted решение…