* * @todo Вместо методов реализовать фабрику методов API, как было раньше */ class Group extends RobotAbstract { /** * LongPoll-сессия * * @var LongPoll */ protected LongPoll $longpoll; /** * Отправить сообщение * * @param int $to Идентификатор получателя * @param string $message Текст сообщения * @param int $mode Режим доставки сообщения * * @return array */ public function message(int $to, string $message, int $mode = 2): array { return Message::put($this, $to, $message, $mode); } /** * Магический метод-сеттер * * @param mixed $name Название * @param mixed $value Значение * * @see RobotAbstract Модификация наследуемого метода * * @return void */ public function __set($name, $value): void { parent::__set($name, $value); if ($name === 'longpoll') { if ($value instanceof LongPoll) { $this->longpoll = $value; } else { $this->longpoll = new LongPoll($this); } } } /** * Магический метод-геттер * * @param mixed $name Название * * @see RobotAbstract Модификация наследуемого метода * * @return mixed */ public function __get($name) { if (!empty($parent = parent::__get($name))) { return $parent; } if ($name === 'longpoll') { if (empty($this->longpoll)) { $this->longpoll = new LongPoll($this); } return $this->longpoll; } } }