public function testConstructorInjection() { $injectionMetaClass = new InjectionMetaClass('Octahedron\\Pulp\\Test\\Meta\\TestConstructorInjectClass', $this->annotationReader); $this->assertTrue($injectionMetaClass->hasInjectableConstructor()); $this->assertEquals(0, count($injectionMetaClass->injectableSetters())); $this->assertEquals(1, count($injectionMetaClass->injectableConstructor())); }
protected function createConstructorParameters(Meta\InjectionMetaClass $metaClass, $assistedParams) { if ($metaClass->hasInjectableConstructor()) { return array_map(function ($parameterMeta) use($assistedParams) { if ($parameterMeta->isAssisted()) { if (!isset($assistedParams[$parameterMeta->name()])) { if (!$parameterMeta->isOptional()) { throw new Binding\BindingException('Missing assisted parameter "' . $parameterMeta->name() . '"'); } else { return $parameterMeta->defaultValue(); } } return $assistedParams[$parameterMeta->name()]; } return $this->createParameter($parameterMeta); }, $metaClass->injectableConstructor()); } else { return (array) $assistedParams; } }