abstract class MyClass
{
private static makeMePublic()
{
}
}
Я хочу, чтобы метод MyClass :: makeMePublic вызывался извне. Я видел решение здесь: Лучшие практики для тестирования защищенных методов с помощью PHPUnit но это требует, чтобы класс был создан. В этом случае это невозможно. Итак, как сделать «публичным» этот метод?
Документы говорят ты можешь просто пройти 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);
...
}
Других решений пока нет …