From 6360d4cddb1b457987f87c4e76a1008a16b0697a Mon Sep 17 00:00:00 2001 From: mirzaev Date: Sun, 26 Feb 2023 02:08:53 +1000 Subject: [PATCH] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB=20?= =?UTF-8?q?=D1=85=D1=83=D0=B9=D0=BD=D0=B8=20=D0=BA=20=D1=81=D0=B5=D1=81?= =?UTF-8?q?=D1=81=D0=B8=D1=8F=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../account/system/models/session_model.php | 60 +++++++++++++++++-- 1 file changed, 54 insertions(+), 6 deletions(-) diff --git a/mirzaev/site/account/system/models/session_model.php b/mirzaev/site/account/system/models/session_model.php index a6a1c0c..e320370 100644 --- a/mirzaev/site/account/system/models/session_model.php +++ b/mirzaev/site/account/system/models/session_model.php @@ -122,6 +122,10 @@ final class session_model extends core } } + public function __destruct() { + // Закрыть сессию + } + /** * Связь сессии с аккаунтом * @@ -218,12 +222,12 @@ final class session_model extends core /** * Записать * - * Ищет свойство, если не находит, то ищет его в инстанции документа сессии из базы данных, - * затем записывает в него переданные данные. Инициализация новых свойств происходит в инстанции + * Ищет свойство в инстанции сессии, если не находит, то ищет его в инстанции документа сессии из базы данных, + * затем записывает в него переданные данные. Динамическая инициализация свойств происходит в инстанции * документа сессии из базы данных * - * @param string $name Название - * @param mixed $value Содержимое + * @param string $name Название свойства + * @param mixed $value Содержимое для записи * * @return void */ @@ -236,9 +240,9 @@ final class session_model extends core /** * Прочитать * - * Ищет свойство, если не находит, то ищет его в инстанции документа сессии из базы данных + * Ищет свойство в инстанции сессии, если не находит, то ищет его в инстанции документа сессии из базы данных * - * @param string $name Название + * @param string $name Название свойства * * @return mixed Данные свойства инстанции сессии или инстанции документа сессии из базы данных */ @@ -246,4 +250,48 @@ final class session_model extends core { return $this->{$name} ?? $this->document->{$name}; } + + /** + * Проверить инициализированность + * + * Ищет свойство в инстанции сессии, если не находит, то ищет его в инстанции документа сессии из базы данных, + * затем проверяет его инициализированность через встроенную функцию isset() + * + * @param string $name Название свойства + * + * @return bool Свойство инициализировано? + */ + public function __isset(string $name): bool + { + return isset($this->{$name}) || isset($this->document->{$name}); + } + + /** + * Удалить + * + * Деинициализирует свойство в инстанции сессии и в инстанции документа сессии из базы данных + * + * @param string $name Название свойства + * + * @return void + */ + public function __unset(string $name): void + { + unset($this->{$name}, $this->document->{$name}); + } + + /** + * Выполнить метод + * + * Ищет метод в инстанции сессии, если не находит, то ищет его в инстанции документа сессии из базы данных + * + * @param string $name Название метода + * @param array $arguments Аргументы + * + * @return void + */ + public function __call(string $name, array $arguments = []): mixed + { + return method_exists($this, $name) ? $this->{$name}($arguments) : $this->document->{$name}($arguments); + } }