/** * @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; }; }
/** * @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())); }; }
public function testArgumentsDefaultToAnEmptyList() { $definition = new ServiceDefinition('service_name', []); assertEquals([], $definition->getArguments()); }