container = $container; } protected function getContainer() { return $this->container; } protected function getClassName($name) { return $this->getContainer()->get('classFinder')->find('Services', $name); } public function checkExists($name) { $className = $this->getClassName($name); if (!$className) { return false; } return true; } public function create($name) { $className = $this->getClassName($name); if (!$className) { throw new Error("Service '{$name}' was not found."); } return $this->createByClassName($className); } protected function createByClassName($className) { if (class_exists($className)) { $service = new $className(); $dependencyList = $service->getDependencyList(); foreach ($dependencyList as $name) { $service->inject($name, $this->container->get($name)); } if (method_exists($service, 'prepare')) { $service->prepare(); } return $service; } throw new Error("Class '$className' does not exist."); } }