Php 为什么数组可以用作回调函数

Php 为什么数组可以用作回调函数,php,Php,在PHP手册的这一页上,我找到了这个函数规范:bool session\u set\u save\u处理程序(callable$open、callable$close、callable$read、callable$write、callable$destroy、callable$gc),它指示所有参数都应该是回调。但我在那页上也找到了这个例子: class FileSessionHandler { private $savePath; functi

在PHP手册的这一页上,我找到了这个函数规范:
bool session\u set\u save\u处理程序(callable$open、callable$close、callable$read、callable$write、callable$destroy、callable$gc)
,它指示所有参数都应该是回调。但我在那页上也找到了这个例子:

    class FileSessionHandler
    {
        private $savePath;

        function open($savePath, $sessionName)
        {
            $this->savePath = $savePath;
            if (!is_dir($this->savePath)) {
                mkdir($this->savePath, 0777);
            }

            return true;
        }

        function close()
        {
           ...
        }
        ...
    }
$handler = new FileSessionHandler();
session_set_save_handler(
    array($handler, 'open'),
    array($handler, 'close'),
    array($handler, 'read'),
    array($handler, 'write'),
    array($handler, 'destroy'),
    array($handler, 'gc')
    );
session\u set\u save\u处理程序中的每个参数都是一个数组,其中第一个元素是处理程序对象,第二个元素是字符串


为什么这些数组可以用作回调?我参考了Array、callback手册,但没有找到任何关于如何实现这一点的线索。

您可能会发现:

在PHP中,各种各样的数据可以作为可调用项传递,包括包含全局作用域或内置函数名称的字符串、闭包(从PHP 5.3开始),或者一个数组,其中包含类的名称和该类中静态方法的名称,或者对象实例和该对象类上实例方法的名称

array($handler, 'open')
为什么这些数组可以用作回调

因为它是一个有效的回调定义:

array($instance,'method')


检查所提供链接中的示例#1类型2和类型3。

只需单击参数前面的“Callable”(可调用),您就可以在手册中阅读:--“passing”(通过)下的第二句话。您可以在问题中写下您已经阅读了手册页面的内容。因此,也许有必要问一下关于数组的哪一部分您还不了解?@hakre我只知道
callable
意味着它将调用数组参数
call\u user\u func
。不,callable是PHP手册中使用的伪类型。它的意思写在我在第一条评论中链接的手册页面上。你知道回调函数是什么吗?所以
callable
意味着它会自动调用数组上的
call\u user\u func
?这只是定义“有效”回调的一种方法。
array($class,'staticMethod')