отражение — Php: как сделать закрытый статический метод общедоступным, и класс не может быть сумасшедшим?

abstract class MyClass
{
private static makeMePublic()
{
}
}

Я хочу, чтобы метод MyClass :: makeMePublic вызывался извне. Я видел решение здесь: Лучшие практики для тестирования защищенных методов с помощью PHPUnit но это требует, чтобы класс был создан. В этом случае это невозможно. Итак, как сделать «публичным» этот метод?

3

Решение

Документы говорят ты можешь просто пройти null в качестве первого параметра invokeArgs выполнить статический метод.

protected static function getMethod($name) {
$class = new ReflectionClass('MyClass');
$method = $class->getMethod($name);
$method->setAccessible(true);
return $method;
}

public function testMakeMePublic() {
$foo = self::getMethod('makeMePublic');
$foo->invokeArgs(null, $args);
...
}
10

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]