/**
* TODO
+ * @var array
*/
- private $_setters;
+ private $_setters = array();
/**
* TODO
$reflectionClass = new ReflectionClass($this->_implementation);
$this->_validateImplementation($reflectionClass);
$instance = $this->_getInstance($injector, $reflectionClass);
+ $setters = $this->_findSetters($reflectionClass);
+ foreach ($setters as $setter) {
+ $this->bindSetter($setter);
+ }
$this->_callSetters($injector, $instance);
return $instance;
}
}
}
+ /**
+ * Find annotated setters in the class docblock
+ *
+ * @param ReflectionClass $reflectionClass
+ *
+ * @return array
+ */
+ private function _findSetters(ReflectionClass $reflectionClass)
+ {
+ $setters = array();
+ $docBlock = $reflectionClass->getDocComment();
+ if ($docBlock) {
+ if (preg_match_all('/@inject (\w+)/', $docBlock, $matches)) {
+ foreach ($matches[1] as $setter) {
+ $setters[] = $setter;
+ }
+ }
+ }
+
+ return $setters;
+ }
}