From dae9b2b5b19796029e0e67f2194f74b21041741f Mon Sep 17 00:00:00 2001 From: Mirzaev Date: Wed, 9 Nov 2022 01:10:17 +1000 Subject: [PATCH] =?UTF-8?q?fix=20"Call=20to=20a=20member=20function=20chec?= =?UTF-8?q?k()"=20=D0=B8=20=D0=BF=D1=83=D1=81=D1=82=D1=8B=D0=B5=20=D0=BA?= =?UTF-8?q?=D0=BE=D0=BC=D0=B0=D0=BD=D0=B4=D1=8B=20=D1=82=D0=B5=D0=BF=D0=B5?= =?UTF-8?q?=D1=80=D1=8C=20=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=B0=D1=8E=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- mirzaev/vk/chat/system/command.php | 5 +++-- mirzaev/vk/chat/system/core.php | 4 ++-- mirzaev/vk/chat/system/pattern.php | 14 +++++++++----- 3 files changed, 14 insertions(+), 9 deletions(-) diff --git a/mirzaev/vk/chat/system/command.php b/mirzaev/vk/chat/system/command.php index 11c9c24..3d4034f 100644 --- a/mirzaev/vk/chat/system/command.php +++ b/mirzaev/vk/chat/system/command.php @@ -45,12 +45,13 @@ class command /** * Выполнить команду * + * @param array $update Событие * @param string ...$parameters Параметры команды * * @return bool */ - public function execute(string ...$parameters): bool + public function execute(array $update, string ...$parameters): mixed { - return ($this->program)(...$parameters); + return call_user_func($this->program, $update, ...$parameters); } } diff --git a/mirzaev/vk/chat/system/core.php b/mirzaev/vk/chat/system/core.php index 69ab838..6a0fb0d 100644 --- a/mirzaev/vk/chat/system/core.php +++ b/mirzaev/vk/chat/system/core.php @@ -47,7 +47,7 @@ class core } // Запись в реестр - $this->patterns []= [$pattern]; + $this->patterns []= $pattern; return $pattern; } @@ -80,7 +80,7 @@ class core // Пройдена проверка на совпадение с шаблоном // Выполнение команд связанных с шаблоном - $pattern->handle($update['object']['message']['from_id'], $parameters); + $pattern->handle($update['object']['message']['from_id'], $update, ...$parameters); return true; } diff --git a/mirzaev/vk/chat/system/pattern.php b/mirzaev/vk/chat/system/pattern.php index 5801ec4..a84c7b6 100644 --- a/mirzaev/vk/chat/system/pattern.php +++ b/mirzaev/vk/chat/system/pattern.php @@ -39,7 +39,7 @@ class pattern public function command(command $command): static { // Запись в реестр - $this->commands []= [$command]; + $this->commands []= $command; return $this; } @@ -55,7 +55,7 @@ class pattern public function check(string $text, array &$parameters = []): bool { // Проверка на совпадение с шаблоном - preg_match_all($this->text, $text, $matches); + preg_match_all($this->text, $text, $matches, PREG_PATTERN_ORDER); // Простой шаблон if (count($matches) === 1) return !empty($matches[0]); @@ -64,7 +64,7 @@ class pattern unset($matches[0]); // Сложный шаблон - foreach ($matches as $match) if (!empty($match[0])) $parameters []= $match[0]; else return false; + foreach ($matches as $match) if (isset($match[0])) $parameters []= $match[0]; else return false; return true; } @@ -73,17 +73,21 @@ class pattern * Обработать подключенные команды * * @param int $id Идентификатор аккаунта вызывающего выполнение + * @param array $update Событие * @param string ...$parameters Параметры команды * * @return void */ - public function handle(int $id, string ...$parameters): void + public function handle(int $id, array $update, string ...$parameters): void { foreach ($this->commands as $command) { // Перебор команд + // Авторизация + if (!empty($command->accounts) && !$command->access($id)) return; + // Выполнение команды - if (!empty($command->accounts) && $command->access($id)) $command->execute(...$parameters); + $command->execute($update, ...$parameters); } } }