【发布时间】:2012-02-06 22:51:06
【问题描述】:
我有一个接受“回调”参数的函数。这可以是函数,也可以是静态类方法。
如何检测方法是否为静态?
【问题讨论】:
-
为什么重要?当然
call_user_func做所有你需要做的,而不用担心它是什么类型 回调? -
因为回调字符串存储在某处并在不同的时间(不同的页面请求)调用。我想确保它是一个静态方法
我有一个接受“回调”参数的函数。这可以是函数,也可以是静态类方法。
如何检测方法是否为静态?
【问题讨论】:
call_user_func 做所有你需要做的,而不用担心它是什么类型 回调?
我想你可以通过反射来做到这一点,虽然这会慢。
假设你的回调是$callback:
if (is_array($callback)) { // a function will just be a string
$classname = $callback[0];
$methodname = $callback[1];
$method = new ReflectionMethod($classname, $methodname);
if ($method->isStatic()) {
// method is static
}
}
请注意,这不考虑$callback[0] 是一个对象,或者如果你有一个作为$callback 的lambda 函数,或者可能是各种不同的情况。我真的不明白你在找什么;这可能就足够了。
【讨论】: