将方法作为数组引用与字符串之间的区别是什么?

时间:2011-01-26 07:57:43

标签: php syntax

作为一个例子,让我们使用is_callable()函数接受函数名作为参数,并检查是否可以从代码中的那一点成功调用它。

如果我想检查一个对象的方法是否可调用,那么在引用静态方法时似乎有两个选择:

选项1:

 is_callable(array("ObjectName", "MethodName"));

选项2:

 is_callable("ObjectName::MethodName");

(实例方法似乎只能使用选项1进行检查,将对象实例作为第一个数组值而不是包含类名的字符串传递。)

这只是一个偏好问题,还是语法糖,还是两者之间存在着明显的差异?

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');