在开发中, 你可能会遇到要根据 Request
带过来的参数来决定调用什么方法的情况.
举例
比如, 现在有一个统一接口: https://zhk1024.com/json?action=blogs
. 需要根据 action
参数的值 blogs
调用一个 blogs
的方法.
我们的接口类如下:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
<?php
// 接口类
class JSON extends BaseClass {
// 接口类的统一入口
public function action() {
$action = $_GET['action'];
if (method_exists($this, $action)) {
$this->$action();
} else {
// 报错信息
// 未定义的 action
}
}
// 获取 blog 文章列表
private function blogs() {
// 数据处理
}
// 获取 blog 分类列表
private function categorys() {
// 数据处理
}
}
判断方法是否定义
此处, method_exists
方法可以判断一个 类
或者 对象
是否有定义指定的方法:
1
method_exists ( mixed $object , string $method_name ) : bool
参数
object
对象示例或者类名method_name
方法名
通过字符串调用方法
判断如果是存在, 则就要调用该方法. 通过字符串调用对象的方法是:
1
2
$method_name = 'blogs';
$obj->$method_name();
但是, 直接使用 'method_name'
+ ()
这样是不行的:
1
2
// 这样写是会报错的
$obj->'blogs'();