89 lines
1.8 KiB
PHP
89 lines
1.8 KiB
PHP
<?php
|
||
|
||
declare(strict_types=1);
|
||
|
||
namespace VK;
|
||
|
||
use \VK\Loggers\Jasmo;
|
||
use \VK\Traits\Singleton;
|
||
use \VK\Traits\Registry;
|
||
|
||
/**
|
||
* Ядро фреймворка для работы с VK API
|
||
*
|
||
* @package VK
|
||
*
|
||
* @property int robots Количество роботов
|
||
*
|
||
* @method build(...$params) Инициализация сборщика
|
||
*
|
||
* @author Arsen Mirzaev
|
||
*/
|
||
class Core
|
||
{
|
||
use Singleton, Registry {
|
||
Singleton::__construct insteadof Registry;
|
||
}
|
||
|
||
/**
|
||
* Количество роботов
|
||
*
|
||
* Хранит экземпляры роботов по их идентификаторам
|
||
*
|
||
* @var int
|
||
*/
|
||
public static int $robots = 0;
|
||
|
||
/**
|
||
* Временная зона
|
||
*
|
||
* Используется в логировании
|
||
*
|
||
* @var string
|
||
*/
|
||
public static string $timezone = 'Europe/Moscow';
|
||
|
||
/**
|
||
* Пути
|
||
*
|
||
* Архитектура проекта
|
||
*
|
||
* @var array
|
||
*/
|
||
public static array $path = [
|
||
'root' => '',
|
||
'log' => ''
|
||
];
|
||
|
||
protected function __construct() {
|
||
self::$path = [
|
||
'root' => dirname(__DIR__) . '..',
|
||
'log' => self::$path['root'] . '/log'
|
||
];
|
||
}
|
||
|
||
/**
|
||
* Инициализация сборщика
|
||
*
|
||
* @return Builder
|
||
*/
|
||
public function build(): Builder
|
||
{
|
||
return new Builder();
|
||
}
|
||
|
||
/**
|
||
* Активация журналирования
|
||
*
|
||
* @return Core
|
||
*
|
||
* @todo Добавить установку иного журналиста по спецификации PSR-3
|
||
*/
|
||
public function log($file = null): Core
|
||
{
|
||
Jasmo::init()::post($file)::postErrorHandler()::postShutdownHandler();
|
||
|
||
return $this;
|
||
}
|
||
}
|