Esempio n. 1
0
 private final function getInitiatorNameAndType($method_name, $declaring_class)
 {
     $backtrace = Kit::columns(debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS, 20), ['class', 'function'], FALSE);
     $initiator_name = NULL;
     foreach ($backtrace as $record) {
         if (TRUE === is_null($record['class']) or TRUE === Kit::in($record['class'], ['Ilex\\Base\\Base', 'Ilex\\Base\\Controller\\Service\\BaseService', 'Ilex\\Base\\Model\\BaseModel'])) {
             continue;
         }
         if ($method_name !== $record['function']) {
             $initiator_name = $record['class'];
             break;
         }
     }
     if (TRUE === is_null($initiator_name)) {
         $result = [$initiator_name, self::T_OTHER];
     } else {
         $initiator = new ReflectionClass($initiator_name);
         $declaring_class_name = $declaring_class->getName();
         if ($initiator_name === $declaring_class_name) {
             $result = [$initiator_name, self::T_SELF];
         } elseif (TRUE === $initiator->isSubclassOf($declaring_class_name)) {
             $result = [$initiator_name, self::T_DESCENDANT];
         } else {
             $result = [$initiator_name, self::T_OTHER];
         }
     }
     // var_dump([$method_name, $declaring_class, $initiator_name]);
     // var_dump($result);
     // var_dump($backtrace);
     return $result;
 }