Exemple #1
0
 protected final function generateExecutionRecord($class_name, $method_name)
 {
     $class = new ReflectionClass($class_name);
     if (FALSE === $class->hasMethod($method_name)) {
         throw new UserException("Method({$method_name}) does not exist in class({$class_name}).");
     }
     $method = new ReflectionMethod($class_name, $method_name);
     if (TRUE === $method->isPublic()) {
         throw new UserException("Method({$method_name}) in class({$class_name}) is public.");
     }
     $declaring_class = $method->getDeclaringClass();
     $declaring_class_name = $declaring_class->getName();
     $methods_visibility = $declaring_class->getStaticProperties()['methodsVisibility'];
     $method_visibility = $this->getMethodVisibility($methods_visibility, $method_name);
     list($initiator_class_name, $initiator_type) = $this->getInitiatorNameAndType($method_name, $declaring_class);
     $method_accessibility = $this->getMethodAccessibility($method_visibility, $initiator_type);
     $handler_prefix = Loader::getHandlerPrefixFromPath($declaring_class_name);
     $handler_suffix = Loader::getHandlerSuffixFromPath($declaring_class_name);
     $execution_record = ['success' => FALSE, 'class' => $class_name, 'method' => $method_name, 'method_accessibility' => $method_accessibility, 'declaring_class' => $declaring_class_name, 'method_visibility' => $method_visibility, 'initiator_class' => $initiator_class_name, 'initiator_type' => $initiator_type, 'handler_prefix' => $handler_prefix, 'handler_suffix' => $handler_suffix];
     return $execution_record;
 }