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); + } }