call_user_func 在类中如何调用并传参

Author: 陌小雨Date: 2023-07-10View: 83

在类中调用 call_user_func 函数,可以使用类的静态方法或实例方法进行调用。

如果要在类的静态方法中调用 call_user_func,可以按照以下方式编写代码:

class MyClass {
    public static function myStaticMethod($param) {
        // 使用 call_user_func 调用函数
        call_user_func('myFunction', $param);
    }
}

function myFunction($param) {
    // 执行函数的逻辑
    echo "参数值为: " . $param;
}

// 在静态方法中调用 call_user_func
MyClass::myStaticMethod('Hello World');

如果要在类的实例方法中调用 call_user_func,可以按照以下方式编写代码:

class MyClass {
    public function myInstanceMethod($param) {
        // 使用 call_user_func 调用函数
        call_user_func(array($this, 'myFunction'), $param);
    }

    public function myFunction($param) {
        // 执行函数的逻辑
        echo "参数值为: " . $param;
    }
}

// 创建对象并调用实例方法
$obj = new MyClass();
$obj->myInstanceMethod('Hello World');

在上述示例中,我们在类的方法中使用了 call_user_func 函数,并传递了一个回调函数名称和参数。注意,在静态方法中使用 call_user_func 时,需要传递函数名称作为字符串;而在实例方法中使用 call_user_func 时,需要将类实例和方法名称作为数组传递给函数。