如何使用 call_user_func() 调用类静态和非静态方法?

我在运行类方法的地方有自定义代码:


$object = new UserClass();

$method = 'create';

$params = ['name' => 'John'];


$reflectionMethod = new \ReflectionMethod($object, $method);


if($reflectionMethod->isStatic()) {

    return $object::$method($params);

} else {

    return $object->$method($params);

}

我如何在不检查方法类型是否为静态的情况下运行类方法,如果可能的话用一行?


慕容708150
浏览 166回答 1
1回答

HUWWW

class UserClass {    public static function foo(string $name) {        echo 'hi ', $name, "\n";    }    public function bar(string $name) {        echo "bye ", $name, "\n";    }}$object  = new UserClass();$methods = ['foo', 'bar'];foreach ($methods as $method) {    call_user_func([$object, $method], "Bobby");}输出:hi Bobbybye Bobbycall_user_func()不关心方法是否是静态的。它在两种情况下都有效。
打开App,查看更多内容
随时随地看视频慕课网APP