log = $log; $this->metadata = $metadata; } /** * @return ?class-string */ public function getLoaderClassName(string $name): ?string { $className = null; try { $className = $this->metadata->get(['app', 'containerServices', $name, 'loaderClassName']); if (!$className) { /** @deprecated */ /** @todo Remove in v9.0. */ $className = $this->metadata->get(['app', 'loaders', ucfirst($name)]); } } catch (Exception) {} if ($className && class_exists($className)) { return $className; } $className = 'Espo\Custom\Core\Loaders\\' . ucfirst($name); if (!class_exists($className)) { $className = 'Espo\Core\Loaders\\' . ucfirst($name); } if (class_exists($className)) { $class = new ReflectionClass($className); if ($class->isInstantiable()) { return $className; } } return null; } /** * @return ?class-string */ public function getServiceClassName(string $name): ?string { return $this->metadata->get(['app', 'containerServices', $name, 'className']) ?? null; } /** * @return ?string[] */ public function getServiceDependencyList(string $name): ?array { return $this->metadata->get(['app', 'containerServices', $name, 'dependencyList']) ?? null; } public function isSettable(string $name): bool { return $this->metadata->get(['app', 'containerServices', $name, 'settable']) ?? false; } }