Download the PHP package phenogram/bindings without Composer
On this page you can find all versions of the php package phenogram/bindings. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.
Download phenogram/bindings
More information about phenogram/bindings
Files in phenogram/bindings
Package bindings
Short Description Low level type-safe PHP bindings for the Telegram Bot API
License MIT
Informations about the package bindings
🇬🇧 ENGLISH | 🇷🇺 РУССКИЙ
PHP SDK для Telegram Bot API
Строго типизированные PHP классы для Telegram Bot API, основанные на официальной документации, для использования в Фреймворке Phenogram
Этот пакет подойдёт тем, кому нужна только отправка запросов в апи, без работы с апдейтами.
В основном сгенерированы с помощью scrapper
Работа всё ещё в процессе, и не каждый класс протестирован или использовался. Если вы обнаружите какие-либо несоответствия с документацией, не стесняйтесь создать ишью. Всё, что не описано в официальной документации Telegram Bot Api, выходит за рамки этого проекта.
Текущая поддерживаемая версия Telegram bot API - v9.0.0
Это только SDK для вашего Telegram-бота, а не полноценный фреймворк, вы можете использовать его целиком, либо только нужные вам куски.
Если вам нужен фреймворк, посмотрите на Phenogram
Установка
Использование
Этот пакет состоит из 3 основных частей: api, сериализатор и фабрика.
Через Api вы будете отправлять запросы к api ботов
Сериализатор отвечает за преобразование объектов в массивы для отправки клиентов и за преобразование ответов от api обратно в строго типизированные объекты.
Все типы реализованы в виде интерфейсов с пропертями (благодаря новой фиче PHP 8.4), что позволяет вам с лёгкостью их переопределить при необходимости.
Фабрика существует как раз для облегчения переопределения типов, именно она используется в сериализациторе и отвечает за создание конкретных объектов.
Сериализатор
Пример использования можно увидеть в классе Api.
Вот простой пример:
Его также можно использовать для десериализации запросов Telegram в типизированные PHP-классы.
Единственное не совсем очевидное - вам нужно передать JSON-закодированную строку
из поля result
запроса Telegram, а не весь запрос.
Использование API
Клиент
Чтобы использовать API, вам сначала нужно реализовать интерфейс ClientInterface,
в котором есть только один метод - sendRequest
.
Обратите особое внимание на обработку InputFile. Вы можете пропустить эту часть и просто преобразовать запрос в json, если нет необходимости отправлять файлы, но это вызовет ужасное исключение, если вы действительно попытаетесь отправить файл.
Реализация клиента выходит за рамки этого проекта, но вот пример реализации с использованием ext-curl:
Можете посмотреть его в действии в тестах)
Но я, конечно, рекомендую использовать какую-нибудь библиотеку, например Guzzle или amphp/http-client. Пример реализации с amphp/http-client есть в Фреймворке Phenogram
Выполнение запросов
Переопределение типов
Скажем, вы хотите использовать свою реализацию ChatLocationInterface вместо стандартной, чтобы адрес всегда был в верхнем регистре.
Первое, что вам нужно - это новый класс, реализующий интерфейс ChatLocationInterface. Для простоты мы унаследуемся от нашего класса ChatLocation.
Далее нам нужно переопределить фабрику, чтобы она создавала наш новый класс вместо стандартного.
И последнее - создать и использовать объект Api с сериализатором, который использует нашу фабрику:
Посмотреть на это можно в тесте
Заключение
Хоть я уже и во всю использую и эти классы и фреймворк в продакшене в своих проектах систент, мистаро и генерач, но этот проект всё равно находится в активно разработке и предоставляется как есть.
Тестируйте самостоятельно!