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 createFactoryFactory(ServiceDefinition $definition) { return function () use($definition) { $className = $definition->getClass(); $factory = new $className(); return $factory(...$this->resolveArguments($definition->getArguments())); }; }
/** * @param ServiceDefinition $definition * * @return Closure */ private function createInstanceFactory(ServiceDefinition $definition) { return function () use($definition) { $className = $definition->getClass(); $instance = new $className(...$this->resolveArguments($definition->getArguments())); foreach ($definition->getMethods() as $name => $args) { $instance->{$name}(...$this->resolveArguments($args)); } return $instance; }; }