这个数组语法是什么意思?

时间:2015-03-08 15:20:16

标签: php

在线查看代码或作为示例或教程的一部分时,我有时会看到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();

?>

有人可以解释一下这种语法的含义吗?

4 个答案:

答案 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);