whitelist = array_unique(array_merge($this->whitelist, func_get_args())); } /** * Tests if a function contains logic: any branching operator, function * call, or object instantiation. * * @param \Pharborist\ParentNode $node * The node to test. * * @return boolean */ public function __invoke(ParentNode $node) { $function_calls = $node ->find(Filter::isInstanceOf('\Pharborist\Functions\FunctionCallNode')) ->not(function(FunctionCallNode $call) { return in_array($call->getName()->getText(), $this->whitelist); }); if ($function_calls->isEmpty()) { $filter = call_user_func_array('\Pharborist\Filter::isInstanceOf', static::$logic); return (boolean) $node->find($filter)->count(); } else { return TRUE; } } }