YiluPHP
这家伙很懒,什么都没有留下...

经验 php中怎么使用ReflectionClass的getMethods方法

浏览数 188852
可使用ReflectionClass的getMethods方法获取类方法的各种属性,如是否为public、是否为抽象方法等。

创建一个抽象类Cls150602,包含一个属性title及三个方法getTitle1,getTitle2,getTitle3。

abstract Class Cls150602 {
private $title = 'title';
public function getTitle1() {
echo 'Cls150602.getTitle1:' . $this->title;
}
protected function getTitle2() {
echo 'Cls150602.getTitle2:' . $this->title;
}
abstract function getTitle1();

创建一个基于类Cls150602的ReflectionClass实例,并通过getMethods方法获得类所有的方法对象。
$cls150602_info = new ReflectionClass('Cls150602');
$all_methods = $cls150602_info->getMethods(); 


可通过方法对象的isPublic方法判断方法是否为public的。
foreach($all_methods as $method) {
$method_name = $method->getName();
echo $method_name . 'is public? ' . ($method->isPublic() ? 'Yes' : 'No') . '
';

可通过方法对象的isAbstract方法判断方法是否为抽象的。
foreach($all_methods as $method) {
$method_name = $method->getName();
echo $method_name . 'is abstract? ' . ($method->isAbstract() ? 'Yes' : 'No') . '
';
$doc = $method->getDocComment(); //读取该方法前的注释内容



参考: https://jingyan.baidu.com/article/8ebacdf028213449f65cd535.html


PHP获取当前类名、方法名
__CLASS__ 获取当前类名
__FUNCTION__ 当前函数名(confirm)
__METHOD__ 当前方法名 (bankcard::confirm)



__FUNCTION__ 函数名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该函数被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__CLASS__ 类的名称(PHP 4.3.0 新加)。自 PHP 5 起本常量返回该类被定义时的名字(区分大小写)。在 PHP 4 中该值总是小写字母的。
__METHOD__ 类的方法名(PHP 5.0.0 新加)。返回该方法被定义时的名字(区分大小写)。

注:这些常量前后均是两个下划线。

get_class(class name);//取得当前语句所在类的类名
get_class_methods(class name);//取得class name 类的所有的方法名,并且组成一个数组
get_class_vars(class name);//取得class name 类的所有的变量名,并组成一个数组。
我来说说