namespace = rtrim($namespace, '\\') . '\\'; $this->baseDir = rtrim($baseDir, DIRECTORY_SEPARATOR) . DIRECTORY_SEPARATOR; } public function register(): void { spl_autoload_register([$this, 'loadClass']); } private function loadClass(string $class): void { if (strpos($class, $this->namespace) !== 0) { return; } $relativeClass = substr($class, strlen($this->namespace)); $file = $this->baseDir . str_replace('\\', DIRECTORY_SEPARATOR, $relativeClass) . '.php'; if (file_exists($file)) { require $file; } } }