Exemplo n.º 1
0
 /**
  * @param $instance
  * @param $class
  * @param PostProcessInterface[] $postProcessors
  * @param null|Proxy $proxyInstance
  * @return mixed
  */
 public function doPostProcessors($instance, $class, array $postProcessors, $proxyInstance = null)
 {
     foreach ($postProcessors as $postProcessor) {
         $instance = $postProcessor->postProcessBeforeInitialization($instance, $class);
     }
     $className = get_class($instance);
     $methodsAnnotations = $this->annotationManager->getMethodsAnnotations($className);
     foreach ($methodsAnnotations as $method => $annotations) {
         if (isset($annotations['Init'])) {
             $methodReflection = ReflectionUtils::getInstance()->getMethodReflection($className, $method);
             $methodReflection->setAccessible(true);
             $methodReflection->invoke($instance);
         }
     }
     foreach ($postProcessors as $postProcessor) {
         if (isset($proxyInstance)) {
             $postProcessor->postProcessAfterInitialization($proxyInstance, $class);
         } else {
             $instance = $postProcessor->postProcessAfterInitialization($instance, $class);
         }
     }
     return $instance;
 }