accounts/hood/accounts/system/account.php

118 lines
2.6 KiB
PHP

<?php
declare(strict_types=1);
namespace mirzaev\accounts;
use GuzzleHttp\Client as browser;
/**
* Аккаунт
*
* @package mirzaev\accounts
* @author Arsen Mirzaev Tatyano-Muradovich <red@hood.su>
*/
class account
{
/**
* @var browser $browser Браузер
*/
protected browser $browser;
/**
* @var bool $ssl SSL-протокол
*/
protected bool $ssl = true;
/**
* @var string $path Директория пользователя
*/
protected string $path;
/**
* Конструктор
*
* @param int $id Идентификатор
* @param float|null $version Версия API
*
* @return self
*/
public function __construct(int $id, float $version = null)
{
// Идентификатор
$this->id = $id;
if (isset($version)) {
// Версия
$this->version = $version;
}
// Сессия
$this->session = count(($core = core::init())->get($id));
// Регистрация в ядре
$core->set($id, $this);
}
/**
* Установка свойства
*
* @param mixed $name Название
* @param mixed $value Значение
*
* @return void
*/
public function __set($name, $value): void
{
if ($name === 'id') {
if (!isset($this->id)) {
$this->id = $value;
} else {
throw new Exception('Запрещено переопределять идентификатор');
}
} else if ($name === 'session') {
if (!isset($this->session)) {
$this->session = $value;
} else {
throw new Exception('Запрещено переопределять сессию');
}
$this->session = $value;
}
}
/**
* Чтение свойства
*
* @param mixed $name Название
*
* @return mixed
*/
public function __get($name)
{
if ($name === 'id') {
return $this->id;
} else if ($name === 'browser') {
return $this->browser;
}
}
/**
* Проверка инициализированности свойства
*
* @param mixed $name Название
*
* @return mixed
*/
public function __isset($name)
{
if ($name === 'id') {
return isset($this->id);
} else if ($name === 'session') {
return isset($this->session);
}
}
}