作为一个例子,让我们使用is_callable()
函数接受函数名作为参数,并检查是否可以从代码中的那一点成功调用它。
如果我想检查一个对象的方法是否可调用,那么在引用静态方法时似乎有两个选择:
选项1:
is_callable(array("ObjectName", "MethodName"));
选项2:
is_callable("ObjectName::MethodName");
(实例方法似乎只能使用选项1进行检查,将对象实例作为第一个数组值而不是包含类名的字符串传递。)
这只是一个偏好问题,还是语法糖,还是两者之间存在着明显的差异?
答案 0 :(得分:7)
这只是语法糖 - is_callable("ObjectName::MethodName")
看起来更好,但需要比数组方法更高的PHP版本。
但是,要创建实例方法的“指针”,必须使用array($instance, 'MethodName')
。
来自PHP docs:
// Type 4: Static class method call (As of PHP 5.2.3)
call_user_func('MyClass::myCallbackMethod');