Chris@0: Chris@0: */ Chris@0: class FunctionsMatcher extends AbstractMatcher Chris@0: { Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function getMatches(array $tokens, array $info = array()) Chris@0: { Chris@0: $func = $this->getInput($tokens); Chris@0: Chris@0: $functions = get_defined_functions(); Chris@0: $allFunctions = array_merge($functions['user'], $functions['internal']); Chris@0: Chris@0: return array_filter($allFunctions, function ($function) use ($func) { Chris@0: return AbstractMatcher::startsWith($func, $function); Chris@0: }); Chris@0: } Chris@0: Chris@0: /** Chris@0: * {@inheritdoc} Chris@0: */ Chris@0: public function hasMatched(array $tokens) Chris@0: { Chris@0: $token = array_pop($tokens); Chris@0: $prevToken = array_pop($tokens); Chris@0: Chris@0: switch (true) { Chris@0: case self::tokenIs($prevToken, self::T_NEW): Chris@0: return false; Chris@0: case self::hasToken(array(self::T_OPEN_TAG, self::T_STRING), $token): Chris@0: case self::isOperator($token): Chris@0: return true; Chris@0: } Chris@0: Chris@0: return false; Chris@0: } Chris@0: }