Вход Регистрация
Файл: gapps/vendor/jeremeamia/SuperClosure/src/Analyzer/Visitor/MagicConstantVisitor.php
Строк: 74
<?php namespace SuperClosureAnalyzerVisitor;

use 
PhpParserNodeScalarLNumber as NumberNode;
use 
PhpParserNodeScalarString_ as StringNode;
use 
PhpParserNode as AstNode;
use 
PhpParserNodeVisitorAbstract as NodeVisitor;

/**
 * This is a visitor that resolves magic constants (e.g., __FILE__) to their
 * intended values within a closure's AST.
 *
 * @internal
 */
final class MagicConstantVisitor extends NodeVisitor
{
    
/**
     * @var array
     */
    
private $location;

    
/**
     * @param array $location
     */
    
public function __construct(array $location)
    {
        
$this->location $location;
    }

    public function 
leaveNode(AstNode $node)
    {
        switch (
$node->getType()) {
            case 
'Scalar_MagicConst_Class' :
                return new 
StringNode($this->location['class']);
            case 
'Scalar_MagicConst_Dir' :
                return new 
StringNode($this->location['directory']);
            case 
'Scalar_MagicConst_File' :
                return new 
StringNode($this->location['file']);
            case 
'Scalar_MagicConst_Function' :
                return new 
StringNode($this->location['function']);
            case 
'Scalar_MagicConst_Line' :
                return new 
NumberNode($node->getAttribute('startLine'));
            case 
'Scalar_MagicConst_Method' :
                return new 
StringNode($this->location['method']);
            case 
'Scalar_MagicConst_Namespace' :
                return new 
StringNode($this->location['namespace']);
            case 
'Scalar_MagicConst_Trait' :
                return new 
StringNode($this->location['trait']);
        }
    }
}
Онлайн: 0
Реклама