-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
keyboard_arrow_right keyboard_arrow_down
-
-
keyboard_arrow_right keyboard_arrow_down
-
-
-
keyboard_arrow_right keyboard_arrow_down
- YCLIENTS
- Маркетплейс интеграций
- Плагинизация
- Руководство по созданию Backend плагина
- SDK Plugin Bundle
SDK Plugin Bundle
Plugin SDK
Мы предоставляем PHP SDK, реализующий интерфейсы для работы с:
- API (ApiClientInterface).
- БД (DbInterface).
- Kafka (KafkaProducerInterface, KafkaConsumerInterface).
- PSR интерфейсы (Cache, Logger, http-client).
Подключение SDK
composer require yclients-sdk/plugin-sdk-bundle
Использование
Вы можете использовать готовые адаптеры под Symfony, Laravel или реализовать интерфейсы самостоятельно.
Работа с базой через YCLIENTS SDK Bundle
В комплекте идет адаптер DoctrineDatabaseAdapter
, реализующий DatabaseContract
:
- create(object): object
- find(string, mixed): ?object
- findAll(string): array
- findBy(string, array, array, ?int, ?int): array
- findOneBy(string, array): ?object
- update(object): object
- delete(object): void
Просто внедрите DatabaseContract
в ваш контроллер или сервис и вызывайте нужный метод.
Работа с кэшем через YCLIENTS SDK Bundle
В комплекте идет адаптер CacheAdapter, реализующий контракт CacheContract
и обёртывающий Symfony Cache.
Методы адаптера:
- get(string $key, callable $callback, int | DateInterval | null $ttl): mixed
Пытается получить значение из кэша по ключу $key. Если в кэше нет записи или она просрочена, выполняет $callback, сохраняет результат с временем жизни $ttl и возвращает его.
Просто внедрите CacheContract в ваш контроллер или сервис через конструктор и вызывайте get() для кэширования любых данных.
Работа с логированием через YCLIENTS SDK Bundle
В комплекте идет адаптер LoggerAdapter, реализующий контракт LoggerContract и оборачивающий стандартный PSR-3 LoggerInterface.
Описание методов
- emergency(message, context): void логирует чрезвычайно критические ошибки, требующие немедленной реакции;
- alert(message, context): void логирует ситуации, требующие немедленной, но менее срочной реакции, чем emergency;
- critical(message, context): void логирует критические условия, например сбои системы или серьёзные сбои компонентов;
- error(message, context): void логирует ошибки выполнения, которые не требуют немедленного вмешательства (например, исключения в пользовательском коде);
- warning(message, context): void логирует предупреждения о потенциальных проблемах или нежелательном поведении;
- notice(message, context): void логирует важные, но не критические события, например завершение фоновых задач;
- info(message, context): void логирует информационные сообщения об обычном ходе работы приложения;
- debug(message, context): void логирует отладочную информацию, полезную при разработке и диагностике;
- log(level, message, context): void универсальный метод, принимающий уровень логирования (PSR-3), сообщение и контекст.
Особенности конфигурации логгера
При настройке LoggerAdapter
в контейнере Symfony можно задать сразу два варианта подключения:
- Через контракт YCLIENTS SDK (
LoggerContract
) Позволяет внедрять в контроллеры и сервисы именно контракт фреймворка плагина. - Через стандартный PSR-3 интерфейс (
Psr\Log\LoggerInterface
) Обеспечивает совместимость с любыми сторонними библиотеками и кодом, ожидающими PSR-3 логгер.
После конфигурации оба варианта будут указывать на один и тот же адаптер, что упрощает переход между использованием собственного контракта и стандартного PSR-3 интерфейса без изменения кода.