/** * @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; } } } }