class HookMethods
@no-named-arguments Parameter names are not covered by the backward compatibility promise for PHPUnit
@internal This class is not covered by the backward compatibility promise for PHPUnit
Hierarchy
- class \PHPUnit\Metadata\Api\HookMethods
Expanded class hierarchy of HookMethods
2 files declare their use of HookMethods
- TestCase.php in vendor/
phpunit/ phpunit/ src/ Framework/ TestCase.php - TestSuite.php in vendor/
phpunit/ phpunit/ src/ Framework/ TestSuite.php
File
-
vendor/
phpunit/ phpunit/ src/ Metadata/ Api/ HookMethods.php, line 24
Namespace
PHPUnit\Metadata\ApiView source
final class HookMethods {
/**
* @psalm-var array<class-string, array{beforeClass: list<non-empty-string>, before: list<non-empty-string>, preCondition: list<non-empty-string>, postCondition: list<non-empty-string>, after: list<non-empty-string>, afterClass: list<non-empty-string>}>
*/
private static array $hookMethods = [];
/**
* @psalm-param class-string $className
*
* @psalm-return array{beforeClass: list<non-empty-string>, before: list<non-empty-string>, preCondition: list<non-empty-string>, postCondition: list<non-empty-string>, after: list<non-empty-string>, afterClass: list<non-empty-string>}
*/
public function hookMethods(string $className) : array {
if (!class_exists($className)) {
return self::emptyHookMethodsArray();
}
if (isset(self::$hookMethods[$className])) {
return self::$hookMethods[$className];
}
self::$hookMethods[$className] = self::emptyHookMethodsArray();
foreach (Reflection::methodsInTestClass(new ReflectionClass($className)) as $method) {
$methodName = $method->getName();
assert(!empty($methodName));
$metadata = Registry::parser()->forMethod($className, $methodName);
if ($method->isStatic()) {
if ($metadata->isBeforeClass()
->isNotEmpty()) {
array_unshift(self::$hookMethods[$className]['beforeClass'], $methodName);
}
if ($metadata->isAfterClass()
->isNotEmpty()) {
self::$hookMethods[$className]['afterClass'][] = $methodName;
}
}
if ($metadata->isBefore()
->isNotEmpty()) {
array_unshift(self::$hookMethods[$className]['before'], $methodName);
}
if ($metadata->isPreCondition()
->isNotEmpty()) {
array_unshift(self::$hookMethods[$className]['preCondition'], $methodName);
}
if ($metadata->isPostCondition()
->isNotEmpty()) {
self::$hookMethods[$className]['postCondition'][] = $methodName;
}
if ($metadata->isAfter()
->isNotEmpty()) {
self::$hookMethods[$className]['after'][] = $methodName;
}
}
return self::$hookMethods[$className];
}
/**
* @psalm-return array{beforeClass: list<non-empty-string>, before: list<non-empty-string>, preCondition: list<non-empty-string>, postCondition: list<non-empty-string>, after: list<non-empty-string>, afterClass: list<non-empty-string>}
*/
private function emptyHookMethodsArray() : array {
return [
'beforeClass' => [
'setUpBeforeClass',
],
'before' => [
'setUp',
],
'preCondition' => [
'assertPreConditions',
],
'postCondition' => [
'assertPostConditions',
],
'after' => [
'tearDown',
],
'afterClass' => [
'tearDownAfterClass',
],
];
}
}
Members
Title Sort descending | Modifiers | Object type | Summary |
---|---|---|---|
HookMethods::$hookMethods | private static | property | @psalm-var array<class-string, array{beforeClass: list<non-empty-string>, before: list<non-empty-string>, preCondition: list<non-empty-string>, postCondition: list<non-empty-string>, after: list<non-empty-string>,… |
HookMethods::emptyHookMethodsArray | private | function | @psalm-return array{beforeClass: list<non-empty-string>, before: list<non-empty-string>, preCondition: list<non-empty-string>, postCondition: list<non-empty-string>, after: list<non-empty-string>, afterClass:… |
HookMethods::hookMethods | public | function | @psalm-param class-string $className |