public function compileScannerInjectionMethods(ClassScanner $scannerClass) { $data = array(); $className = $scannerClass->getName(); foreach ($scannerClass->getMethods(true) as $scannerMethod) { $methodName = $scannerMethod->getName(); // determine initiator & constructor dependencies if ($methodName === '__construct' && $scannerMethod->isPublic()) { $params = $scannerMethod->getParameters(true); if ($params) { $data[$methodName] = array(); foreach ($params as $param) { $data[$methodName][$param->getName()] = $param->getClass(); } } } // scan for setter injection if (preg_match('#^set[A-Z]#', $methodName)) { $data[$methodName] = $scannerMethod->getParameters(); $params = $scannerMethod->getParameters(true); $data[$methodName] = array(); foreach ($params as $param) { $data[$methodName][$param->getName()] = $param->getClass(); } } } return $data; }
/** * @return MethodScanner[] */ public function getMethods() { $methods = $this->classScanner->getMethods(); foreach ($this->parentClassScanners as $pClassScanner) { $methods = array_merge($methods, $pClassScanner->getMethods()); } return $methods; }
/** * * @param ClassScanner $class * @return ClassAnnotationHolder */ public function parseClass(ClassScanner $class) { $classAnnotationHolder = new ClassAnnotationHolder($class); $classAnnotations = $class->getAnnotations($this->annotationManager); if ($classAnnotations instanceof AnnotationCollection) { foreach ($classAnnotations as $annotation) { $classAnnotationHolder->addAnnotation($annotation); } } else { $classAnnotations = new AnnotationCollection(array()); } foreach ($class->getMethods() as $method) { // zf can't process abstract methods for now, wrap with "try" block $methodAnnotationHolder = new MethodAnnotationHolder($method); $methodAnnotations = $method->getAnnotations($this->annotationManager); if ($methodAnnotations instanceof AnnotationCollection) { foreach ($methodAnnotations as $annotation) { $methodAnnotationHolder->addAnnotation($annotation); } } $classAnnotationHolder->addMethod($methodAnnotationHolder); } return $classAnnotationHolder; }