在线查看代码或作为示例或教程的一部分时,我有时会看到some_function(array($this, 'something'))
这意味着什么?我从来没有见过这样的数组语法,这让我很困惑。
一个例子是来自a comment in the manual的代码:
<?php
class ClassAutoloader {
public function __construct() {
spl_autoload_register(array($this, 'loader'));
}
private function loader($className) {
echo 'Trying to load ', $className, ' via ', __METHOD__, "()\n";
include $className . '.php';
}
}
$autoloader = new ClassAutoloader();
$obj = new Class1();
$obj = new Class2();
?>
有人可以解释一下这种语法的含义吗?
答案 0 :(得分:1)
这是一个PHP callable
。这意味着在对象loader
上调用方法$this
。
以下链接包含更多信息:http://php.net/manual/en/language.types.callable.php
答案 1 :(得分:1)
这是PHP中常用的数组语法。你可能很困惑,因为它没有保存在变量中而是直接传递。为澄清这一点,
spl_autoload_register(array($this, 'loader'));
相当于
$array = array($this, 'loader');
spl_autoload_register($array);
和
$array = array();
$array[0] = $this;
$array[1] = 'loader';
spl_autoload_register($array);
答案 2 :(得分:0)
好吧,它将单个参数交给函数spl_autoload_register()
。参数的类型为array
,包含两个元素。第一个是调用函数的对象,第二个是字符串。
答案 3 :(得分:0)
some_function(array($this, 'something'))
只是您调用的函数,作为参数,您可以为其指定数组
可以将其改写为
some_function([$this, 'something'])
或
$arr = array($this, 'something');
some_function($arr);