我在运行类方法的地方有自定义代码:$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()不关心方法是否是静态的。它在两种情况下都有效。
- 1 回答
- 0 关注
- 165 浏览
添加回答
举报
0/150
提交
取消