获取一个类的所有公共方法可以使用PHP内置函数get_class_methods($classname)
。这个函数接受一个类的名称作为参数,并且返回一个数组,包含第一个参数类的所有方法名。以下是使用get_class_methods()
函数的示例。
基本用法
对于一个类,首先需要实例化,然后将其传递给get_class_methods()
函数,即可获得该类的所有公共方法名称数组:
class Test {
public function test1() {
return 'test1';
}
public function test2() {
return 'test2';
}
protected function test3() {
return 'test3';
}
}
$class_methods = get_class_methods('Test');
print_r($class_methods);
输出结果:
Array
(
[0] => test1
[1] => test2
)
从上面的结果可以看出类Test的所有公共方法名称都存储在返回的数组中。方法test3()
并不在数组中,并且这是因为它是受保护的方法。
使用反射获取方法名称
如果要获取一个类的私有方法或受保护方法的名称,我们可以使用PHP内置的反射类,以下是一个实例:
class Test {
private function privateMethod() {
return 'private method';
}
protected function protectedMethod() {
return 'protected method';
}
public function publicMethod() {
return 'public method';
}
}
$class = new ReflectionClass('Test');
$methods = $class->getMethods(ReflectionMethod::IS_PRIVATE | ReflectionMethod::IS_PROTECTED);
$type = array(ReflectionMethod::IS_PRIVATE => 'private', ReflectionMethod::IS_PROTECTED => 'protected');
foreach ($methods as $method) {
echo sprintf(
"%s %s<br />\n",
$type[$method->getModifiers()],
$method->getName()
);
}
输出结果:
private privateMethod
protected protectedMethod
从上面的结果可以看出,反射模式获取了类Test的所有受保护和私有方法名称。与get_class_methods()
函数不同的是,反射模式可以获取私有和受保护方法名称。
总结:使用get_class_methods()
函数和反射类可以有效地获取一个类的所有公共、私有、受保护方法名称,并且无需实例化。使用这些函数可以帮助我们开发更好理解的代码,并且可用于自动化测试。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:php使用get_class_methods()函数获取分类的方法 - Python技术站