Opis\Closure\ReflectionClosure::getUseVariables PHP 메소드

getUseVariables() 공개 메소드

public getUseVariables ( ) : array
리턴 array
    public function getUseVariables()
    {
        if ($this->useVariables !== null) {
            return $this->useVariables;
        }
        $tokens = $this->getTokens();
        $use = array();
        $state = 'start';
        foreach ($tokens as &$token) {
            $is_array = is_array($token);
            switch ($state) {
                case 'start':
                    if ($is_array && $token[0] === T_USE) {
                        $state = 'use';
                    }
                    break;
                case 'use':
                    if ($is_array) {
                        if ($token[0] === T_VARIABLE) {
                            $use[] = substr($token[1], 1);
                        }
                    } elseif ($token == ')') {
                        break 2;
                    }
                    break;
            }
        }
        $this->useVariables = empty($use) ? $use : array_intersect_key($this->getStaticVariables(), array_flip($use));
        return $this->useVariables;
    }

Usage Example

예제 #1
0
파일: Analyzer.php 프로젝트: opis/closure
 /**
  * Analyzer a given closure.
  *
  * @param Closure $closure
  *
  * @return array
  */
 public function analyze(Closure $closure)
 {
     $reflection = new ReflectionClosure($closure);
     $scope = $reflection->getClosureScopeClass();
     $data = ['reflection' => $reflection, 'code' => $reflection->getCode(), 'hasThis' => $reflection->isBindingRequired(), 'context' => $reflection->getUseVariables(), 'hasRefs' => false, 'binding' => $reflection->getClosureThis(), 'scope' => $scope ? $scope->getName() : null, 'isStatic' => $reflection->isStatic()];
     return $data;
 }