У меня такой класс:
use \TelegramBot\Api\Client; use yii\web\Controller; class ProducerController extends Controller { public $client; public function init() { parent::init(); $this->enableCsrfValidation = false; $this->client = new Client( Yii::$app->bot->apiToken ); } public function actionIndex() { $this->client->command( 'ping' , array($this, 'ping' )); $this->client->run(); } public function ping( $msg ) { $this->client->sendMessage( $msg->getChat() ->getId() , 'pong!' ); } }
В настоящее время у меня возникают проблемы с вызовом обратного вызова в этом разделе:
$this->client->command( 'ping' , array($this, 'ping' ));
Это дает мне ошибку, что «вторым параметром должен быть массив экземпляра закрытия, данный» .
Я пробовал что-то вроде создания статического метода ping и называл его self::ping
и некоторые другие способы безрезультатно.
Кроме того, существует параметр $msg
который не может быть передан методу с использованием моего текущего подхода.
Таким образом, он отлично работает с анонимной функцией (см. Ниже фрагмент):
$client = $this->client; $this->client->command( 'ping' , function($msg) use($client){ $client->sendMessage( $msg->getChat() ->getId() , 'pong!' ); });
Он работает так, как ожидалось, но мне нужно реализовать его как метод. Проблема в том, что я не могу понять, как это сделать.
Как я могу это достичь?