/** * Apply any function call, array and object deference. * @param Node $function_reference * @param bool $dynamic TRUE if the function call is dynamic * @return Node */ private function functionCall(Node $function_reference, $dynamic = FALSE) { if ($dynamic) { $node = new CallbackCallNode(); $node->addChild($function_reference, 'callback'); } else { if ($function_reference instanceof NameNode && $function_reference->childCount() === 1 && $function_reference == 'define') { $node = new DefineNode(); } else { $node = new FunctionCallNode(); } $node->addChild($function_reference, 'name'); } $this->functionCallParameterList($node); return $this->objectDereference($this->arrayDeference($node)); }