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

Age*_*rum 3 php syntax

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

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

选项1:

 is_callable(array("ObjectName", "MethodName"));
Run Code Online (Sandbox Code Playgroud)

选项2:

 is_callable("ObjectName::MethodName");
Run Code Online (Sandbox Code Playgroud)

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

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

Thi*_*ter 7

它只是语法糖 - is_callable("ObjectName::MethodName")看起来更好,但需要比阵列方法更高的PHP版本.

但是,要创建实例方法的"指针",必须使用array($instance, 'MethodName').

PHP文档:

// Type 4: Static class method call (As of PHP 5.2.3)
call_user_func('MyClass::myCallbackMethod');
Run Code Online (Sandbox Code Playgroud)