首页 PHP 如何通过方法名判断方法是否实现并调用方法
文章
取消

PHP 如何通过方法名判断方法是否实现并调用方法

在开发中, 你可能会遇到要根据 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'();
本文由作者按照 CC BY 4.0 进行授权

Swift 5.1 学习 (3) : 基本数据类型

Swift 5.1 学习 (4) : 元组