Php: how to make private static method to public, and class cannot be insantized?
1 2 3 4 5 6 | abstract class MyClass { private static makeMePublic() { } } |
我想让MyClass :: makeMePublic方法可以从外部调用。 我在这里看到了一个解决方案:使用PHPUnit测试受保护方法但需要对类进行实例化的最佳实践。 在这种情况下,它是不可能的。 那么,如何制作"公开"这种方法呢?
文档说你可以将
1 2 3 4 5 6 7 8 9 10 11 12 | 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); ... } |