Ejemplo n.º 1
0
 private static function _get_nested_keys($key)
 {
     $keys = \Ws\Helper\Arrays::normalize($key, '/');
     $last = array_pop($keys);
     return [$keys, $last];
 }
Ejemplo n.º 2
0
 /**
  * 获取回调函数对象
  * 
  * @param  mixed $closure 回调函数对象
  * 
  * @return array
  */
 public static function getClosure($closure)
 {
     if (empty($closure)) {
         return null;
     }
     $closureType = null;
     if (self::isClosure($closure)) {
         $closureType = 'closure';
     } else {
         if (is_callable($closure)) {
             $closureType = 'callable';
         } else {
             if (is_string($closure)) {
                 $closure = \Ws\Helper\Arrays::normalize($closure, '@');
                 // class, method
                 $class = array_shift($closure);
                 if (class_exists($class)) {
                     $method = array_shift($closure);
                     if (empty($method)) {
                         $method = 'execute';
                     }
                     if (is_callable([$class, $method])) {
                         $closureType = 'method';
                         $closure = [$class, $method];
                     }
                 }
             }
         }
     }
     if (empty($closureType)) {
         return null;
     }
     return ['type' => $closureType, 'closure' => $closure];
 }