我在運行類方法的地方有自定義代碼:$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 關注
- 193 瀏覽
添加回答
舉報
0/150
提交
取消