为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

PHP
慕容708150 2023-04-28 14:57:17
我在运行类方法的地方有自定义代码:$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);}我如何在不检查方法类型是否为静态的情况下运行类方法,如果可能的话用一行?
查看完整描述

1 回答

?
HUWWW

TA贡献1874条经验 获得超12个赞

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 Bobby

bye Bobby

call_user_func()不关心方法是否是静态的。它在两种情况下都有效。


查看完整回答
反对 回复 2023-04-28
  • 1 回答
  • 0 关注
  • 139 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信