# 1、前言
在开发 `ThinkPHP` 项目时,我们通常需要获取模块下的所有方法,以方便我们在调用时使用。本篇文章将介绍获取模块下所有方法的方法。
# 2、获取模块下所有方法
## 2.1、使用 `get_class_methods` 函数
我们可以使用PHP自带的 `get_class_methods` 函数来获取模块下所有方法。
函数用法:
```php
array get_class_methods ( mixed $class_name )
```
参数说明:
- `class_name`:必选参数,表示要获取方法列表的类名或对象。当然我们这里是用类名。
使用示例:
```php
public function getMethods()
{
$className = 'app\index\controller\Index';//要获取方法列表的类名
$methods = get_class_methods($className);//获取该类下的所有方法
return $methods;
}
```
## 2.2、使用 `ReflectionClass` 类
我们还可以使用PHP自带的 `ReflectionClass` 类来获取模块下所有方法。
类用法:
```php
class ReflectionClass implements Reflector {
...
public function getMethods ( void ) : array
...
}
```
方法说明:
- `getMethods()`:获取类中定义的所有方法,返回一个方法数组
使用示例:
```php
public function getMethods()
{
$className = 'app\index\controller\Index';//要获取方法列表的类名
$reflectionClass = new \ReflectionClass($className);//创建反射类对象
$methods = $reflectionClass->getMethods();//获取该类下的所有方法
return $methods;
}
```
# 3、示例代码
```php
namespace app\index\controller;
use think\Controller;
class Index extends Controller
{
public function getMethods()
{
$className = 'app\index\controller\Index';//要获取方法列表的类名
$methods = get_class_methods($className);//获取该类下的所有方法
return $methods;
}
public function getMethodsByReflection()
{
$className = 'app\index\controller\Index';//要获取方法列表的类名
$reflectionClass = new \ReflectionClass($className);//创建反射类对象
$methods = $reflectionClass->getMethods();//获取该类下的所有方法
return $methods;
}
}
```
# 4、总结
通过本篇文章,我们了解了获取模块下所有方法的两种方法,分别是使用 `get_class_methods` 函数和使用 `ReflectionClass` 类。其中,使用 `ReflectionClass` 类可以获取比较详细的方法信息,包括方法的访问级别、参数、注释等。