*/ class Core { use Singleton, Registry { Singleton::__construct insteadof Registry; } /** * Количество роботов * * Хранит экземпляры роботов по их идентификаторам * * @var int */ public int $robots = 0; /** * Временная зона * * Используется в логировании * * @var string */ public string $timezone = 'Europe/Moscow'; /** * Пути * * Архитектура проекта * * @var array */ public array $path = [ 'root' => '', 'logs' => './logs', 'temp' => './temp' ]; /** * Инициализация * * @see Singleton->__construct() Внимание на protected */ protected function __construct() { $this->path['root'] = $root = dirname(__DIR__); $this->path['logs'] = $root . '/logs'; $this->path['temp'] = $root . '/temp'; } /** * Сборщик * * @return Builder */ public function build(): Builder { return new Builder($this); } /** * Запись в реестр * * Модификация наследуемого метода * * @param mixed $id * @param mixed $robot * * @return void */ public static function set(int $id, RobotAbstract $robot): bool { if (empty(self::$registry[$id])) { self::$registry[$id] = []; } array_push(self::$registry[$id], $robot); return true; } }