TG Telegram Group & Channel
PHP Fart Time | United States America (US)
Create: Update:

Продолжаем знакомство с миром #Buggregator

💾 Trap

Рабочее название в первые дни — "Buggregator Client". Задумывался как прокси вар-дампов на Buggregator Cloud, но быстро оброс фичами и новым смыслом.

Теперь Trap — это:
- Миниатюрный сервер Buggregator, не требующий Docker для работы. Написан на файберах PHP 8.1. Раньше выводил дампы, логи, HTTP и прочие события только в консоль. Сейчас поддерживается такой же WEB интерфейс, как у старшего брата.
- Набор патчей для Symfony VarDumper. Наличие установленного Trap в вашем проекте улучшит то, как VarDumper отрисовывает Protobuf объекты.
- Набор хелперов. В Trap есть функция trap(). Это тот же Symfony dump(), но с некоторыми изменениями.

Установка:

composer require --dev buggregator/trap -W


🪲 Trap сервер

Запускается из вендора:
./vendor/bin/trap --ui

Флаг --ui необходим для включения веб-морды на 8000 порту. Сейчас эта функция в бета-режиме.

По умолчанию Trap слушает только один порт 9912, но туда можно слать всё: и дампы, и логи, и http, переходящий в WebSocket. Мы написали инспектор траффика, который сам определяет протокол и направляет данные в нужный обработчик.
Trap можно запустить на тех же портах, что и основной Buggregator:
vendor/bin/trap -p1025 -p9912 -p9913 -p8000

(стоит ли сделать этот список портов по умолчанию?)

Trap годится только для локального использования: тут нет SSO, а из "внешних БД", возможно, будет только SQLite, просто чтобы не хранить события в массивах 🙂
Но есть и эксклюзивные фичи:
- благодаря "локальности", Trap может находить файлы профилировщиков, если таковые были сконфигурированы в php.ini.
- низкоуровневая работа с трафиком позволяет реализовать абсолютно любой протокол. Даже просто вывести сырые бинарные данные, как отдельное событие, чего-то да стоит!

🚀 Хэлперы trap()

Функция trap() немного отличается от dump():
- При вызове сразу настраиваются умолчания для отправки симфоневых дампов на локальный сервер (127.0.0.1:9912), так что не надо лезть в .env.
- trap() имеет текучий интерфейс (fluent interface), а значит можно делать так:
trap(FOO: $foo, BAR: $bar) // Дампаем переменные с указанием имен
->stackTrace() // Добавить красивый Stack Trace
->once() // Сработает один раз. Удобно использовать в циклах.
->if($foo instanceof FooInterface) // Условие отправки; можно функцией
->return(); // $foo вернётся как результат

- trap()::profile()->... в планах добавить удобства для профилирования
- а ещё (субъективно) trap набирать и произносить удобнее, чем dump. Так что хватит дампать, го трапать!

🪄 Подводя итог

Trap как сервер — хорошая альтернатива, когда не хочется запускать докер а PHP установлен локально.
Trap как PHP helper — необходим, если работаете с Protobuf и gRPC. Может быть удобнее dump(). Перспективен.

⭐️ Также будем очень рады звёздочкам на гитхабе и контрибьюторской поддержке.

Продолжаем знакомство с миром #Buggregator

💾 Trap

Рабочее название в первые дни — "Buggregator Client". Задумывался как прокси вар-дампов на Buggregator Cloud, но быстро оброс фичами и новым смыслом.

Теперь Trap — это:
- Миниатюрный сервер Buggregator, не требующий Docker для работы. Написан на файберах PHP 8.1. Раньше выводил дампы, логи, HTTP и прочие события только в консоль. Сейчас поддерживается такой же WEB интерфейс, как у старшего брата.
- Набор патчей для Symfony VarDumper. Наличие установленного Trap в вашем проекте улучшит то, как VarDumper отрисовывает Protobuf объекты.
- Набор хелперов. В Trap есть функция trap(). Это тот же Symfony dump(), но с некоторыми изменениями.

Установка:
composer require --dev buggregator/trap -W


🪲 Trap сервер

Запускается из вендора:
./vendor/bin/trap --ui

Флаг --ui необходим для включения веб-морды на 8000 порту. Сейчас эта функция в бета-режиме.

По умолчанию Trap слушает только один порт 9912, но туда можно слать всё: и дампы, и логи, и http, переходящий в WebSocket. Мы написали инспектор траффика, который сам определяет протокол и направляет данные в нужный обработчик.
Trap можно запустить на тех же портах, что и основной Buggregator:
vendor/bin/trap -p1025 -p9912 -p9913 -p8000

(стоит ли сделать этот список портов по умолчанию?)

Trap годится только для локального использования: тут нет SSO, а из "внешних БД", возможно, будет только SQLite, просто чтобы не хранить события в массивах 🙂
Но есть и эксклюзивные фичи:
- благодаря "локальности", Trap может находить файлы профилировщиков, если таковые были сконфигурированы в php.ini.
- низкоуровневая работа с трафиком позволяет реализовать абсолютно любой протокол. Даже просто вывести сырые бинарные данные, как отдельное событие, чего-то да стоит!

🚀 Хэлперы trap()

Функция trap() немного отличается от dump():
- При вызове сразу настраиваются умолчания для отправки симфоневых дампов на локальный сервер (127.0.0.1:9912), так что не надо лезть в .env.
- trap() имеет текучий интерфейс (fluent interface), а значит можно делать так:
trap(FOO: $foo, BAR: $bar) // Дампаем переменные с указанием имен
->stackTrace() // Добавить красивый Stack Trace
->once() // Сработает один раз. Удобно использовать в циклах.
->if($foo instanceof FooInterface) // Условие отправки; можно функцией
->return(); // $foo вернётся как результат

- trap()::profile()->... в планах добавить удобства для профилирования
- а ещё (субъективно) trap набирать и произносить удобнее, чем dump. Так что хватит дампать, го трапать!

🪄 Подводя итог

Trap как сервер — хорошая альтернатива, когда не хочется запускать докер а PHP установлен локально.
Trap как PHP helper — необходим, если работаете с Protobuf и gRPC. Может быть удобнее dump(). Перспективен.

⭐️ Также будем очень рады звёздочкам на гитхабе и контрибьюторской поддержке.
Please open Telegram to view this post
VIEW IN TELEGRAM
10🔥5


>>Click here to continue<<

PHP Fart Time






Share with your best friend
VIEW MORE

United States America Popular Telegram Group (US)