/** * @param $code * @param array $ignoredConstants * @return Constant[] */ public function scan($code, $ignoredConstants = array()) { $constants = array(); $tokenStream = token_get_all($code); foreach ($tokenStream as $key => $token) { if ($token[0] !== T_STRING) { continue; } if (isset($token[1]) && in_array($token[1], $this->keywords)) { continue; } if (isset($token[1]) && in_array($token[1], $ignoredConstants)) { continue; } // :: // -> // \ if (isset($tokenStream[$key - 1]) && in_array($tokenStream[$key - 1][0], array(T_PAAMAYIM_NEKUDOTAYIM, T_OBJECT_OPERATOR, T_NS_SEPARATOR))) { continue; } // USE // CONST if (isset($tokenStream[$key - 2]) && in_array($tokenStream[$key - 2][0], array(T_NAMESPACE, T_USE, T_CONST, T_NEW, T_AS, T_INSTANCEOF, T_EXTENDS, T_IMPLEMENTS))) { continue; } // ( // :: if (isset($tokenStream[$key + 1]) && (in_array($tokenStream[$key + 1][0], array(T_WHITESPACE, T_PAAMAYIM_NEKUDOTAYIM, T_NAMESPACE, T_NS_SEPARATOR)) || $tokenStream[$key + 1] === "(")) { continue; } $constant = new Constant(); $constant->setLine($token[2]); $constant->setName($token[1]); $constants[] = $constant; } return $constants; }
public function testGetSetName() { $this->constant->setName('foo'); $this->assertEquals('foo', $this->constant->getName()); }