From 085974f7408cc44bc8184fdf8214934d29256187 Mon Sep 17 00:00:00 2001 From: Arsen Mirzaev Tatyano-Muradovich Date: Tue, 27 Jul 2021 14:44:35 +1000 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D1=8F=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=20?= =?UTF-8?q?=D0=BE=D1=88=D0=B8=D0=B1=D0=BE=D0=BA=20=D1=81=D0=BB=D0=B8=D1=8F?= =?UTF-8?q?=D0=BD=D0=B8=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 10 +- mirzaev/vk/system/api/longpoll.php | 14 - mirzaev/vk/system/core.php | 119 +----- mirzaev/vk/system/robots/robot.php | 617 ++++++++++------------------- 4 files changed, 216 insertions(+), 544 deletions(-) diff --git a/README.md b/README.md index 0b20413..5dfffec 100644 --- a/README.md +++ b/README.md @@ -13,6 +13,14 @@ use hood\accounts\vk; // Подключение библеотек require_once './vendor/autoload.php'; + +// Инициализация ядра +$core = core::init(); + +// Инициализация робота +$robot = $core->group(ACCOUNT_ID)->key(ACCOUNT_KEY); +$robot = $core->auth(ACCOUNT_LOGIN, ACCOUNT_PASSWORD)->key(ACCOUNT_KEY); + // Инициализация пользователя ВКонтакте $account = (new vk($id))->auth('login', 'password')->key($project_id); @@ -21,4 +29,4 @@ $robot = core::init()->group($account); // Отправка сообщения $robot->message($to, 'Привет, я создал робота!'); -``` \ No newline at end of file +``` diff --git a/mirzaev/vk/system/api/longpoll.php b/mirzaev/vk/system/api/longpoll.php index 3912c60..e41ac4c 100644 --- a/mirzaev/vk/system/api/longpoll.php +++ b/mirzaev/vk/system/api/longpoll.php @@ -171,15 +171,11 @@ final class longpoll /** * Получить события * -<<<<<<< HEAD:hood/vk/system/api/longpoll.php - * $wait Время ожидания новых событий (в секундах) -======= * @param int $wait Время ожидания новых событий (в секундах) * * @todo Проверка на ошибки запроса, включая на наличие доступа к лонгполл у ключа * * @return array ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/api/longpoll.php */ public function get(int $wait = 25): array { @@ -188,15 +184,6 @@ final class longpoll // Запрос на получение доступа и данных LongPoll-сервера $response = json_decode($this->robot->browser->request(method: 'POST', uri: 'groups.getLongPollServer', options: [ -<<<<<<< HEAD:hood/vk/system/api/longpoll.php - 'form_params' => [ - 'group_id' => $this->robot->id, - 'v' => $this->robot->version, - 'access_token' => $this->robot->key - ], - - ])->getBody()->getContents())->response; -======= 'form_params' => $this->robot->api['settings'] ])->getBody()->getContents()); @@ -208,7 +195,6 @@ final class longpoll // Инициализация $response = $response->response; ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/api/longpoll.php // Ключ доступа $this->key = $response->key; diff --git a/mirzaev/vk/system/core.php b/mirzaev/vk/system/core.php index c3c703f..89786e4 100644 --- a/mirzaev/vk/system/core.php +++ b/mirzaev/vk/system/core.php @@ -13,17 +13,6 @@ use Exception; /** * Ядро * -<<<<<<< HEAD - * $robots Количество роботов - * $timezone Временная зона (журналирование) - * $path Пути (архитектура проекта) - * - * protected static function __construct() Инициализация - * public static function init() Запуск инициализации или получение инстанции - * public public function build() Сборщик - * public function set($id, $value) Запись в реестр - * public function get($id = null) Чтение из реестра -======= * @property-read int $robots Количество роботов * @property string $timezone Временная зона (журналирование) * @property array $path Пути (архитектура проекта) @@ -33,7 +22,6 @@ use Exception; * @method public public function build() Сборщик * @method public function set($id, $value) Запись в реестр * @method public function get($id = null) Чтение из реестра ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * * @package mirzaev\vk * @author Arsen Mirzaev Tatyano-Muradovich @@ -42,29 +30,13 @@ final class core { use singleton; -<<<<<<< HEAD:hood/vk/system/core.php -<<<<<<< HEAD /** * Счётчик роботов -======= - /** -======= - /** ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/core.php - * Счётчик роботов - * - * @var int ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ private int $robots = 0; /** * Реестр роботов -<<<<<<< HEAD -======= - * - * @var array ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ private array $registry = []; @@ -72,60 +44,32 @@ final class core * Временная зона * * Используется в логировании -<<<<<<< HEAD -======= - * - * @var string ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ private string $timezone; /** * Путь до корня проекта -<<<<<<< HEAD -======= - * - * @var string ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ private string $path_root; /** * Путь до папки журналов -<<<<<<< HEAD -======= - * - * @var string ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ private string $path_logs; /** * Путь до временной папки -<<<<<<< HEAD -======= - * - * @var string ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 */ private string $path_temp; /** * Запись в журнал * -<<<<<<< HEAD - * $file Файл для журналирования -======= * @param string $file Файл для журналирования * -<<<<<<< HEAD:hood/vk/system/core.php * @return self ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * -======= ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/core.php * @todo Добавить установку иного журналиста по спецификации PSR-3 - * @todo Более гибкое журналирование */ public function journal(string $file = null): self { @@ -138,23 +82,12 @@ final class core /** * Записать в реестр * -<<<<<<< HEAD - * $id Идентификатор - * $robot робот - * - * @see hood\vk\traits\registry Модификация метода -======= * @param int $id * @param robot $robot * -<<<<<<< HEAD:hood/vk/system/core.php - * @see hood\vk\traits\registry Модификация метода + * @see mirzaev\vk\traits\registry Модификация метода * * @return void ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 -======= - * @see mirzaev\vk\traits\registry Модификация метода ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/core.php */ public function write(int $id, robot $robot): void { @@ -182,23 +115,12 @@ final class core * * Если не передать идентификатор, то вернёт все значения * -<<<<<<< HEAD - * $id Идентификатор - * $session Сессия - * - * @see hood\vk\traits\registry Модификация метода -======= * @param int|null $id Идентификатор * @param int|null $session Сессия * * @see mirzaev\vk\traits\registry Модификация метода * -<<<<<<< HEAD:hood/vk/system/core.php - * @return mixed ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 -======= * @return mixed Весь реестр, робота или сессию робота ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/core.php */ public function read(int|null $id = null, int|null $session = null): mixed { @@ -233,23 +155,12 @@ final class core /** * Удалить из реестра * -<<<<<<< HEAD - * $id Идентификатор - * $session Сессия - * - * @see hood\vk\traits\registry Модификация метода -======= * @param int|null $id Идентификатор * @param int|null $session Сессия * -<<<<<<< HEAD:hood/vk/system/core.php - * @see hood\vk\traits\registry Модификация метода - * * @return void ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 -======= + * * @see mirzaev\vk\traits\registry Модификация метода ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/core.php */ public function delete(int|null $id = null, int|null $session = null): void { @@ -296,18 +207,10 @@ final class core /** * Записать свойство * -<<<<<<< HEAD - * $name Название - * $value Значение -======= * @param mixed $name Название * @param mixed $value Значение -<<<<<<< HEAD:hood/vk/system/core.php * * @return void ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 -======= ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/core.php */ public function __set(mixed $name, mixed $value): void { @@ -321,20 +224,12 @@ final class core /** * Прочитать свойство -<<<<<<< HEAD - * + * * Значение по умолчанию, есле не задано - * - * $name Название -======= * * @param mixed $name Название -<<<<<<< HEAD:hood/vk/system/core.php * * @return mixed ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 -======= ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/core.php */ public function __get(mixed $name): mixed { @@ -354,18 +249,10 @@ final class core * Ищет класс описывающий робота, * создаёт и возвращает его объект * -<<<<<<< HEAD - * $method Метод - * $params Параметры -======= * @param string $method Метод * @param array $params Параметры -<<<<<<< HEAD:hood/vk/system/core.php * * @return robot ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 -======= ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/core.php */ public function __call(string $method, array $params): robot { diff --git a/mirzaev/vk/system/robots/robot.php b/mirzaev/vk/system/robots/robot.php index 9c9985b..a921185 100644 --- a/mirzaev/vk/system/robots/robot.php +++ b/mirzaev/vk/system/robots/robot.php @@ -6,56 +6,15 @@ namespace mirzaev\vk\robots; use Exception; -use GuzzleHttp\Client as browser; - -<<<<<<< HEAD:hood/vk/system/robots/robot.php -<<<<<<< HEAD -use hood\vk\core, - hood\vk\api\methods\method, - hood\vk\proxies\proxy, - hood\vk\captcha\captcha; - -use hood\accounts\vk as account; - -/** - * Робот - * - * $id Идентификатор - * $session Сессия - * $key Ключ - * $version Версия API - * $account Аккаунт - * $browser Браузер - * $proxy Прокси - * $captcha Обработчик капчи - * - * $messages_mode Режим отправки сообщений - * - * public function __construct(int $id = null, float $version = null) Конструктор - * public function key(string $key) Инициализация ключа - * public function account(account $account) Инициализация аккаунта - * public function __set($name, $value) Запись свойства - * public function __get($name) Чтение свойства - * public function __isset($name) Проверка на инициализированность свойства - * public function __call(string $method, array $params) Вызов метода - * public static function __callStatic(string $method, array $params) Вызов статического метода - * public function __toString() Конвертация в строку -======= -use hood\vk\core; -use hood\vk\proxies\proxy; -use hood\vk\captcha\captcha; -use hood\vk\api\api; -use hood\vk\api\methods\method; -======= use mirzaev\vk\core; use mirzaev\vk\proxies\proxy; use mirzaev\vk\captcha\captcha; use mirzaev\vk\api\settings as api; use mirzaev\vk\api\methods\method; ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/robots/robot.php use mirzaev\accounts\vk as account; +use GuzzleHttp\Client as browser; /** * Робот @@ -80,406 +39,238 @@ use mirzaev\accounts\vk as account; * @method public function __call(string $method, array $params) Вызов метода * @method public static function __callStatic(string $method, array $params) Вызов статического метода * @method public function __toString() Конвертация в строку ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 * * @package mirzaev\vk\robots * @author Arsen Mirzaev Tatyano-Muradovich */ abstract class robot { - /** -<<<<<<< HEAD - * Идентификатор - */ - protected int $id; + /** + * Сессия + */ + protected int $session; - /** - * Сессия -======= - * @var int Сессия ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - */ - protected int $session; + /** + * Аккаунт + */ + private account $account; - /** -<<<<<<< HEAD:hood/vk/system/robots/robot.php -<<<<<<< HEAD - * Ключ -======= - * @var string Ключ ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - */ - protected string $key; + /** + * Прокси + */ + protected proxy $proxy; - /** -<<<<<<< HEAD - * Версия API - */ - protected float $version = 5.124; + /** + * Обработчик капчи + */ + protected captcha $captcha; - /** - * Аккаунт -======= -======= ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/robots/robot.php - * @var string Аккаунт ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - */ - private account $account; + /** + * $messages_mode Режим отправки сообщений + */ + protected int $messages_mode = 1; - /** -<<<<<<< HEAD - * Прокси -======= - * @var proxy Прокси ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - */ - protected proxy $proxy; + /** + * Конструктор + * + * @param int|null $id Идентификатор + * @param string|null $key Ключ + */ + public function __construct( + protected int|null $id = null, + protected string|null $key = null + ) { + // Инициализация ядра + $core = core::init(); - /** -<<<<<<< HEAD - * Обработчик капчи -======= - * @var captcha Обработчик капчи ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - */ - protected captcha $captcha; + // Идентификация робота + $this->id = $id ?? $core->robots + 1; - /** -<<<<<<< HEAD - * $messages_mode Режим отправки сообщений - */ - protected int $messages_mode = 1; + // Регистрация робота в ядре + $core->write($this->id, $this); -======= - * @var int Режим отправки сообщений - */ - protected int $messages_mode = 1; + // Идентификация сессии робота + $this->session = count($core->read($this->id)); + } - /** - * @var api API ВКонтакте - */ - protected api $api; ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - /** - * Конструктор - * -<<<<<<< HEAD:hood/vk/system/robots/robot.php -<<<<<<< HEAD - * $id Идентификатор - * $version Версия API - */ - public function __construct(int|null $id = null, float|null $version = null) - { -======= - * @param int $id Идентификатор -======= - * @param int|null $id Идентификатор - * @param string|null $key Ключ ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/robots/robot.php - */ - public function __construct( - protected int|null $id = null, - protected string|null $key = null - ) { ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - // Инициализация ядра - $core = core::init(); + /** + * Инициализация ключа + * + * @param string $key Ключ + * + * @return self + */ + public function key(string $key): self + { + $this->__set('key', $key); - // Идентификация робота - $this->id = $id ?? $core->robots + 1; + return $this; + } - // Регистрация робота в ядре - $core->write($this->id, $this); + /** + * Инициализация аккаунта + * + * @param account $account Аккаунт + * + * @return self + */ + public function account(account $account): self + { + $this->__set('account', $account); - // Идентификация сессии робота -<<<<<<< HEAD:hood/vk/system/robots/robot.php - $this->session = count($core->get($this->id)); -<<<<<<< HEAD + return $this; + } - if (isset($version)) { - // Инициализация версии - $this->version = $version; - } -======= ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 -======= - $this->session = count($core->read($this->id)); ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/robots/robot.php - } + /** + * Инициализация прокси + * + * @param proxy $proxy Прокси + * + * @return self + */ + public function proxy(proxy $proxy): self + { + $this->__set('proxy', $proxy); - /** - * Инициализация ключа - * -<<<<<<< HEAD - * $key Ключ -======= - * @param string $key Ключ - * - * @return self ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - */ - public function key(string $key): self - { - $this->__set('key', $key); + return $this; + } - return $this; - } + /** + * Инициализация обработчика капчи + * + * @param captcha $captcha Обработчик капчи + * + * @return self + */ + public function captcha(captcha $captcha): self + { + $this->__set('captcha', $captcha); - /** - * Инициализация аккаунта - * -<<<<<<< HEAD - * $account Аккаунт -======= - * @param account $account Аккаунт - * - * @return self ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - */ - public function account(account $account): self - { - $this->__set('account', $account); + return $this; + } - return $this; - } + /** + * Записать свойство + * + * @param string $name Название + * @param mixed $value Значение + * + * @return void + */ + public function __set(string $name, mixed $value): void + { + match ($name) { + 'id' => isset($this->id) ? throw new Exception('Запрещено перезаписывать идентификатор', 500) : $this->id = (int) $value, + 'session' => isset($this->session) ? throw new Exception('Запрещено перезаписывать сессию', 500) : $this->session = (int) $value, + 'key' => isset($this->key) ? throw new Exception('Запрещено перезаписывать ключ', 500) : $this->key = (string) $value, + 'api' => isset($this->api) ? throw new Exception('Запрещено перезаписывать API', 500) : $this->api = $value, + 'account' => isset($this->account) ? throw new Exception('Запрещено перезаписывать аккаунт', 500) : $this->account = $value, + 'browser' => isset($this->browser) ? throw new Exception('Запрещено перезаписывать браузер', 500) : $this->browser = $value, + 'proxy' => $this->proxy = $value, + 'captcha' => $this->captcha = $value, + 'messages_new' => $this->messages_new = (int) $value, + default => throw new Exception("Свойство $name не найдено", 404) + }; + } - /** - * Инициализация прокси - * -<<<<<<< HEAD - * $proxy Прокси -======= - * @param proxy $proxy Прокси - * - * @return self ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - */ - public function proxy(proxy $proxy): self - { - $this->__set('proxy', $proxy); + /** + * Прочитать свойство + * + * @param string $name Название + * + * @return mixed + */ + public function __get(string $name): mixed + { + return match ($name) { + 'id' => $this->id ?? throw new Exception('Идентификатор не инициализирован', 500), + 'session' => $this->session ?? throw new Exception('Сессия не инициализирована', 500), + 'key' => $this->key ?? throw new Exception('Ключ не инициализирован', 500), + 'api' => $this->api ?? $this->api = new api($this), + 'account' => $this->account ?? throw new Exception('Аккаунт не инициализирован', 500), + 'browser' => $this->browser ?? $this->browser = new browser([ + 'base_uri' => 'https://api.vk.com/method/', + 'cookies' => true + ]), + 'proxy' => $this->proxy, + 'captcha' => $this->captcha, + 'messages_new' => $this->messages_new, + default => throw new Exception("Свойство $name не найдено", 404) + }; + } - return $this; - } + /** + * Проверить свойство на инициализированность + * + * @param string $name Название + * + * @return mixed + */ + public function __isset(string $name): bool + { + return match ($name) { + 'id' => isset($this->id), + 'session' => isset($this->session), + 'key' => isset($this->key), + 'account' => isset($this->account), + 'api' => isset($this->api), + 'browser' => isset($this->browser), + 'proxy' => isset($this->proxy), + 'captcha' => isset($this->captcha), + 'messages_new' => isset($this->messages_new), + default => throw new Exception("Свойство $name не найдено", 404) + }; + } - /** - * Инициализация обработчика капчи - * -<<<<<<< HEAD - * $captcha Обработчик капчи -======= - * @param captcha $captcha Обработчик капчи - * - * @return self ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - */ - public function captcha(captcha $captcha): self - { - $this->__set('captcha', $captcha); + /** + * Вызвать метод + * + * Ищет класс описывающий метод API ВКонтакте, + * создаёт и возвращает его объект + * + * @param string $method Метод + * @param array $params Параметры + * + * @return method + */ + public function __call(string $method, array $params): method + { + if (class_exists($class = '\\mirzaev\\vk\\api\\methods\\' . $method . 's')) { + // Если найден класс реализующий запрошенный метод + return new $class($this, ...$params); + } - return $this; - } + throw new Exception("Метод $method не найден", 404); + } - /** - * Записать свойство - * -<<<<<<< HEAD - * $name Название - * $value Значение -======= - * @param string $name Название - * @param mixed $value Значение - * - * @return void ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - */ - public function __set(string $name, mixed $value): void - { - match ($name) { -<<<<<<< HEAD:hood/vk/system/robots/robot.php - 'id' => !isset($this->id) ? $this->id = (int) $value : throw new Exception('Запрещено перезаписывать идентификатор'), - 'session' => !isset($this->session) ? $this->session = (int) $value : throw new Exception('Запрещено перезаписывать сессию'), - 'key' => !isset($this->key) ? $this->key = (string) $value : throw new Exception('Запрещено перезаписывать ключ'), -<<<<<<< HEAD - 'version' => !isset($this->version) ? $this->version = (float) $value : throw new Exception('Запрещено перезаписывать версию API'), -======= - 'api' => !isset($this->api) ? $this->api = $value : throw new Exception('Запрещено перезаписывать API'), ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - 'account' => !isset($this->account) && $value instanceof account ? $this->account = $value : throw new Exception('Запрещено перезаписывать аккаунт'), - 'browser' => !isset($this->browser) && $value instanceof browser ? $this->browser = $value : throw new Exception('Запрещено перезаписывать браузер'), - 'proxy' => $this->proxy = $value, - 'captcha' => $this->captcha = $value, - 'messages_new' => $this->messages_new = (int) $value, -<<<<<<< HEAD - // Если свойство не найдено: -======= ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - default => throw new Exception('Свойство не найдено: ' . $name) -======= - 'id' => isset($this->id) ? throw new Exception('Запрещено перезаписывать идентификатор', 500) : $this->id = (int) $value, - 'session' => isset($this->session) ? throw new Exception('Запрещено перезаписывать сессию', 500) : $this->session = (int) $value, - 'key' => isset($this->key) ? throw new Exception('Запрещено перезаписывать ключ', 500) : $this->key = (string) $value, - 'api' => isset($this->api) ? throw new Exception('Запрещено перезаписывать API', 500) : $this->api = $value, - 'account' => isset($this->account) ? throw new Exception('Запрещено перезаписывать аккаунт', 500) : $this->account = $value, - 'browser' => isset($this->browser) ? throw new Exception('Запрещено перезаписывать браузер', 500) : $this->browser = $value, - 'proxy' => $this->proxy = $value, - 'captcha' => $this->captcha = $value, - 'messages_new' => $this->messages_new = (int) $value, - default => throw new Exception("Свойство $name не найдено", 404) ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/robots/robot.php - }; - } + /** + * Вызвать статический метод + * + * Ищет класс описывающий метод API ВКонтакте, + * создаёт и возвращает его объект + * + * @param string $method Метод + * @param array $params Параметры + * + * @return method + */ + public static function __callStatic(string $method, array $params): method + { + if (class_exists($class = '\\mirzaev\\vk\\api\\methods\\' . $method . 's')) { + return $class(self, ...$params); + } - /** - * Прочитать свойство - * -<<<<<<< HEAD - * $name Название - * - * @return mixed - */ - public function __get(string $name) - { - return match ($name) { - 'id' => isset($this->id) ? $this->id : throw new Exception('Идентификатор не инициализирован'), - 'session' => isset($this->session) ? $this->session : throw new Exception('Сессия не инициализирована'), - 'key' => isset($this->key) ? $this->key : throw new Exception('Ключ не инициализирован'), - 'version' => isset($this->version) ? $this->version : throw new Exception('Версия не инициализирована'), - 'account' => isset($this->account) ? $this->account : throw new Exception('Аккаунт не инициализирован'), -======= - * @param string $name Название - * - * @return mixed - */ - public function __get(string $name): mixed - { - return match ($name) { - 'id' => $this->id ?? throw new Exception('Идентификатор не инициализирован', 500), - 'session' => $this->session ?? throw new Exception('Сессия не инициализирована', 500), - 'key' => $this->key ?? throw new Exception('Ключ не инициализирован', 500), - 'api' => $this->api ?? $this->api = new api($this), -<<<<<<< HEAD:hood/vk/system/robots/robot.php - 'account' => $this->account ?? throw new Exception('Аккаунт не инициализирован'), ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 -======= - 'account' => $this->account ?? throw new Exception('Аккаунт не инициализирован', 500), ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/robots/robot.php - 'browser' => $this->browser ?? $this->browser = new browser([ - 'base_uri' => 'https://api.vk.com/method/', - 'cookies' => true - ]), - 'proxy' => $this->proxy, - 'captcha' => $this->captcha, - 'messages_new' => $this->messages_new, -<<<<<<< HEAD:hood/vk/system/robots/robot.php -<<<<<<< HEAD - // Если свойство не найдено: -======= ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - default => throw new Exception('Свойство не найдено: ' . $name) -======= - default => throw new Exception("Свойство $name не найдено", 404) ->>>>>>> 579e64b087c763b465464b5ee0d14b16a98d17b2:mirzaev/vk/system/robots/robot.php - }; - } + throw new Exception("Метод $method не найден", 404); + } - /** - * Проверить свойство на инициализированность - * -<<<<<<< HEAD - * $name Название - * - * @return mixed - */ - public function __isset(string $name) -======= - * @param string $name Название - * - * @return mixed - */ - public function __isset(string $name): bool ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - { - return match ($name) { - 'id' => isset($this->id), - 'session' => isset($this->session), - 'key' => isset($this->key), - 'account' => isset($this->account), -<<<<<<< HEAD - 'version' => isset($this->version), -======= - 'api' => isset($this->api), ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - 'browser' => isset($this->browser), - 'proxy' => isset($this->proxy), - 'captcha' => isset($this->captcha), - 'messages_new' => isset($this->messages_new), - default => throw new Exception("Свойство $name не найдено", 404) - }; - } - - /** - * Вызвать метод - * - * Ищет класс описывающий метод API ВКонтакте, - * создаёт и возвращает его объект - * -<<<<<<< HEAD - * $method Метод - * $params Параметры -======= - * @param string $method Метод - * @param array $params Параметры - * - * @return method ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - */ - public function __call(string $method, array $params): method - { - if (class_exists($class = '\\mirzaev\\vk\\api\\methods\\' . $method . 's')) { - // Если найден класс реализующий запрошенный метод - return new $class($this, ...$params); - } - - throw new Exception("Метод $method не найден", 404); - } - - /** - * Вызвать статический метод - * - * Ищет класс описывающий метод API ВКонтакте, - * создаёт и возвращает его объект - * -<<<<<<< HEAD - * $method Метод - * $params Параметры -======= - * @param string $method Метод - * @param array $params Параметры - * - * @return method ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - */ - public static function __callStatic(string $method, array $params): method - { - if (class_exists($class = '\\mirzaev\\vk\\api\\methods\\' . $method . 's')) { - return $class(self, ...$params); - } - - throw new Exception("Метод $method не найден", 404); - } - - /** - * Конвертировать в строку -<<<<<<< HEAD -======= - * - * @return string ->>>>>>> a45b5c327511a74d1fae5ab0e3a1dcc68e7dc3b4 - */ - public function __toString(): string - { - return (string) $this->id; - } + /** + * Конвертировать в строку + * + * @return string + */ + public function __toString(): string + { + return (string) $this->id; + } }