public function testServiceAliasDefinition() { $definition = new ServiceDefinition('service_name', ['service' => __CLASS__]); assertTrue($definition->isAlias()); assertFalse($definition->isFactory()); assertSame(__CLASS__, $definition->getClass()); }
/** * @param ServiceDefinition $definition * * @return Closure */ private function createFactory(ServiceDefinition $definition) { if ($definition->isFactory()) { return $this->applyInflectors($this->createFactoryFactory($definition)); } if ($definition->isAlias()) { return $this->createAliasFactory($definition); } return $this->applyInflectors($this->createInstanceFactory($definition)); }
/** * @param ServiceDefinition $definition * * @throws NotClassDefinitionException * * @return void */ private function registerService(ServiceDefinition $definition) { if ($definition->isFactory()) { $this->getContainer()->add($definition->getName(), $this->createFactoryFactory($definition), $definition->isSingleton()); return; } if ($definition->isAlias()) { $this->getContainer()->add($definition->getName(), $this->createAliasFactory($definition)); return; } $service = $this->getContainer()->add($definition->getName(), $definition->getClass(), $definition->isSingleton()); if (!$service instanceof ClassDefinition) { throw NotClassDefinitionException::fromServiceName($definition->getName()); } $service->withArguments($this->injectContainer($definition->getArguments())); $this->addMethodCalls($service, $definition); }