public function testCoverAllMethods() { $allInternalMethods = get_class_methods(\ReflectionProperty::class); $allMissedMethods = []; foreach ($allInternalMethods as $internalMethodName) { if ('export' === $internalMethodName) { continue; } $refMethod = new \ReflectionMethod(ReflectionProperty::class, $internalMethodName); $definerClass = $refMethod->getDeclaringClass()->getName(); if (strpos($definerClass, 'Go\\ParserReflection') !== 0) { $allMissedMethods[] = $internalMethodName; } } if ($allMissedMethods) { $this->markTestIncomplete('Methods ' . join($allMissedMethods, ', ') . ' are not implemented'); } }
/** * Returns list of reflection methods * * @param null|integer $filter Optional filter * * @return array|\ReflectionMethod[] */ public function getMethods($filter = null) { if (!isset($this->methods)) { $directMethods = ReflectionMethod::collectFromClassNode($this->classLikeNode, $this); $parentMethods = $this->recursiveCollect(function (array &$result, \ReflectionClass $instance, $isParent) { $reflectionMethods = []; foreach ($instance->getMethods() as $reflectionMethod) { if (!$isParent || !$reflectionMethod->isPrivate()) { $reflectionMethods[$reflectionMethod->name] = $reflectionMethod; } } $result += $reflectionMethods; }); $methods = $directMethods + $parentMethods; $this->methods = $methods; } if (!isset($filter)) { return array_values($this->methods); } $methods = []; foreach ($this->methods as $method) { if (!($filter & $method->getModifiers())) { continue; } $methods[] = $method; } return $methods; }
/** * Implementation of internal reflection initialization * * @return void */ protected function __initialize() { parent::__construct($this->className, $this->getName()); }