这个数组语法是什么意思


What does this array syntax mean?

在网上查看代码或作为示例或教程的一部分时,我有时会some_function(array($this, 'something'))这是什么意思?我从未见过这样的数组语法,这真的让我感到困惑。

一个例子是手册中注释中的代码:

<?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();
?>

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

这是一个

PHP callable。这意味着在对象上调用方法loader $this

以下是包含更多信息的链接:http://php.net/manual/en/language.types.callable.php

这是

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);
好吧,

它将单个参数交给函数spl_autoload_register()。该参数的类型为 array,包含两个元素。第一个是调用函数的对象,第二个是字符串。

some_function(array($this, 'something')) 

只是您调用的一个函数,作为参数,您给它一个数组

可以重写成这个

some_function([$this, 'something'])

$arr = array($this, 'something');
some_function($arr);