dd

Плохой API у telegram-bot пакета

Написано

в

Небольшая заметка вам по поводу проектирования библиотек, которыми будут пользоваться другие люди
Для взаимодействия с телегой в пхп есть один очень широко используемый пакет: https://github.com/php-telegram-bot/core
У него куча звёзд и куча форков. Значит он норм, так? Не совсем, апи, которое этот пакет предоставляет, далеко не самое удобное.
Рассмотрим максимально простой пример — нужно отправить сообщение.
Естественно, мы создаём клиента, через которого будем слать сообщения: $bot = new Telegram(YOUR_API_TOKEN)
Дальше всё просто, отправляем сообщение: $bot->sendMessage($message, $params). А, стоп. Метод не определён..?
Как оказалось, для любых действий нужно использовать статические методы из класса Request, например Request::sendMessage($message, $params)
Но тогда возникает абсолютно логичный вопрос — откуда вообще Request знает что-либо о том, куда слать сообщения? Всё дело в том, что когда мы делаем new Telegram(), в конструкторе этого объекта идёт инициализация класса Request через статический метод initialize.
Таким образом, чтобы отправить сообщение, код получается следующий:

php
new Telegram(YOUR_API_TOKEN);
Request::sendMessage($message, $params)

В этом случае, клиент и отправка сообщений на первый взгляд вообще никак не связаны. Пожалуйста, не делайте так!
Это просто ярчайший пример кривого дизайна библиотеки

Комментарии

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *