Mercurial > hg > isophonics-drupal-site
comparison vendor/psy/psysh/src/Psy/TabCompletion/Matcher/ObjectMethodDefaultParametersMatcher.php @ 0:4c8ae668cc8c
Initial import (non-working)
author | Chris Cannam |
---|---|
date | Wed, 29 Nov 2017 16:09:58 +0000 |
parents | |
children | 7a779792577d |
comparison
equal
deleted
inserted
replaced
-1:000000000000 | 0:4c8ae668cc8c |
---|---|
1 <?php | |
2 | |
3 /* | |
4 * This file is part of Psy Shell. | |
5 * | |
6 * (c) 2012-2017 Justin Hileman | |
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 ObjectMethodDefaultParametersMatcher extends AbstractDefaultParametersMatcher | |
15 { | |
16 public function getMatches(array $tokens, array $info = array()) | |
17 { | |
18 $openBracket = array_pop($tokens); | |
19 $functionName = array_pop($tokens); | |
20 $methodOperator = array_pop($tokens); | |
21 | |
22 $objectToken = array_pop($tokens); | |
23 if (!is_array($objectToken)) { | |
24 return array(); | |
25 } | |
26 | |
27 $objectName = str_replace('$', '', $objectToken[1]); | |
28 | |
29 try { | |
30 $object = $this->getVariable($objectName); | |
31 $reflection = new \ReflectionObject($object); | |
32 } catch (InvalidArgumentException $e) { | |
33 return array(); | |
34 } catch (\ReflectionException $e) { | |
35 return array(); | |
36 } | |
37 | |
38 $methods = $reflection->getMethods(); | |
39 | |
40 foreach ($methods as $method) { | |
41 if ($method->getName() === $functionName[1]) { | |
42 return $this->getDefaultParameterCompletion($method->getParameters()); | |
43 } | |
44 } | |
45 | |
46 return array(); | |
47 } | |
48 | |
49 public function hasMatched(array $tokens) | |
50 { | |
51 $openBracket = array_pop($tokens); | |
52 | |
53 if ($openBracket !== '(') { | |
54 return false; | |
55 } | |
56 | |
57 $functionName = array_pop($tokens); | |
58 | |
59 if (!self::tokenIs($functionName, self::T_STRING)) { | |
60 return false; | |
61 } | |
62 | |
63 $operator = array_pop($tokens); | |
64 | |
65 if (!self::tokenIs($operator, self::T_OBJECT_OPERATOR)) { | |
66 return false; | |
67 } | |
68 | |
69 return true; | |
70 } | |
71 } |