public function bind(Type $type) { if (!$type->isInstantiable()) { throw new ConfigurationException("Type {$type->name} is not instantiable"); } $dependencies = []; $ctor = $type->getConstructor(); foreach ($ctor ? $ctor->getParameters() : [] as $parameter) { $dependencies[] = $this->bindParameter($parameter); } $this->bindings->put(new InlineBinding($type, $dependencies)); }
public function generateDependencyInjection(Type $type, CodeWriter $writer) { $ctor = $type->getConstructor(); $route = $type->getAnnotation("Spot\\App\\Web\\Route"); $paths = $this->compiler->parse($route->value); $parameters = $ctor->getParameters(); if ($parameters) { $this->generateDependencyInjectionParameter(array_shift($parameters), $paths, $writer); foreach ($parameters as $parameter) { $writer->write(', '); $this->generateDependencyInjectionParameter($parameter, $paths, $writer); } } }