/** * @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 ClassDefinition $service * @param ServiceDefinition $definition */ private function addMethodCalls(ClassDefinition $service, ServiceDefinition $definition) { foreach ($definition->getMethods() as $method => $args) { $service->withMethodCall($method, $this->injectContainer($args)); } }
public function testMethodsDefaultToAnEmptyList() { $definition = new ServiceDefinition('service_name', []); assertEquals([], $definition->getMethods()); }