118 lines
2.6 KiB
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);
|
|
}
|
|
}
|
|
}
|