Небольшая заметка вам по поводу проектирования библиотек, которыми будут пользоваться другие люди
Для взаимодействия с телегой в пхп есть один очень широко используемый пакет: 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)
В этом случае, клиент и отправка сообщений на первый взгляд вообще никак не связаны. Пожалуйста, не делайте так!
Это просто ярчайший пример кривого дизайна библиотеки
Добавить комментарий