2013-04-07 47 views
-1

在PHP手册http://www.php.net/manual/en/function.session-set-save-handler.php的这个页面上,我发现这个函数规范:bool session_set_save_handler (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_set_save_handler每个参数是一个阵列,其中第一元素是处理程序对象和第二字符串。

为什么这些数组可以用作回调?我引用了Array,回调手册,但没有发现如何实现这一点。

+0

只需点击参数前面的“Callable”即可阅读说明书:http://www.php.net/language.types.callable.php – hakre 2013-04-07 16:57:37

+0

http://php.net/manual/ en/language.types.callable.php - “传递”下的第二个句子。 – Jon 2013-04-07 16:57:42

+0

你在你的问题中写下你已经阅读过手册页。因此,可能值得回想一下你不明白的阵列中的哪一部分? – hakre 2013-04-07 17:00:34

回答

1
array($handler, 'open') 

为什么这些阵列可以作为回调?

http://php.net/manual/en/language.types.callable.php

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

array($instance,'method') 

array($class,'staticMethod') 

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

+0

so'callable'意味着它会自动调用数组上的'call_user_func'? – LotusH 2013-04-07 17:03:04

+0

这只是一种定义“有效”回调的方法。 – mpm 2013-04-07 17:11:02

0

您可能会发现有启发:

http://php.net/manual/en/language.types.callable.php

一个相当广泛的数据可以在PHP可调用,包括含有全局范围或内置功能,打着封闭一个字符串传递的(从PHP 5.3开始)或包含该类的名称以及该类中的静态方法的名称或对象实例的名称以及该对象的类上的实例方法的名称的数组。

相关问题