示例#1
0
 /**
  * @param Node $node
  * @param string $name
  * @param string $parent
  * @param string[] $includes
  * @param string[] $filters
  */
 function __construct(Node $node, $name = NULL, $parent = NULL, array $includes = NULL, array $filters = NULL)
 {
     $this->m_name = $name != NULL ? $name : $node->name();
     $this->m_root = $node;
     if ($includes) {
         $this->m_parent = $parent;
         $this->m_includes = $includes;
         $this->m_filters = $filters;
     } else {
         // check first child for inheritance
         if (($firstChild = $node->firstToken()) && $firstChild->type() === TokenType::T_INHERIT) {
             $this->m_parent = $firstChild->name();
         }
         // include dependency names
         $this->m_includes = array_map('strval', iterator_to_array($node->GetChildrenByType(TokenType::T_INCLUDE, true)));
         /** @var EvalNameToken $token */
         $this->m_filters = [];
         foreach ($node->GetChildrenByClass(EvalNameToken::class, true) as $token) {
             foreach ($token->filters() as $filter) {
                 $this->m_filters[$filter] = $filter;
             }
         }
     }
 }