Subversion-Projekte lars-tiefland.laravel_shop

Revision

Revision 148 | Details | Vergleich mit vorheriger | Letzte Änderung | Log anzeigen | RSS feed

Revision Autor Zeilennr. Zeile
148 lars 1
<?php
2
 
3
/*
4
 * This file is part of Psy Shell.
5
 *
200 lars 6
 * (c) 2012-2023 Justin Hileman
148 lars 7
 *
8
 * For the full copyright and license information, please view the LICENSE
9
 * file that was distributed with this source code.
10
 */
11
 
12
namespace Psy\TabCompletion\Matcher;
13
 
14
class FunctionDefaultParametersMatcher extends AbstractDefaultParametersMatcher
15
{
16
    public function getMatches(array $tokens, array $info = []): array
17
    {
18
        \array_pop($tokens); // open bracket
19
 
20
        $functionName = \array_pop($tokens);
21
 
22
        try {
23
            $reflection = new \ReflectionFunction($functionName[1]);
24
        } catch (\ReflectionException $e) {
25
            return [];
26
        }
27
 
28
        $parameters = $reflection->getParameters();
29
 
30
        return $this->getDefaultParameterCompletion($parameters);
31
    }
32
 
33
    public function hasMatched(array $tokens): bool
34
    {
35
        $openBracket = \array_pop($tokens);
36
 
37
        if ($openBracket !== '(') {
38
            return false;
39
        }
40
 
41
        $functionName = \array_pop($tokens);
42
 
43
        if (!self::tokenIs($functionName, self::T_STRING)) {
44
            return false;
45
        }
46
 
47
        if (!\function_exists($functionName[1])) {
48
            return false;
49
        }
50
 
51
        return true;
52
    }
53
}