PHP的session_set_save_handler中的回调方法可以是私有的吗?

时间:2008-10-29 21:26:26

标签: php class session scope handler

我在PHP中编写自定义会话处理程序,并尝试将session_set_save_handler中定义的方法设为私有。

session_set_save_handler(
    array('Session','open'),
    array('Session','close'),
    array('Session','read'),
    array('Session','write'),
    array('Session','destroy'),
    array('Session','gc')
);

例如,我可以将open函数设置为private而不会出现任何错误,但是当我将write方法设为私有时,它会咆哮我。

  

致命错误:调用私有方法   Session :: write()来自上下文''in   第0行未知

我只是想知道这是一个错误还是有办法解决这个问题。除非我当然可以公开,但我宁愿不公开。去年有一篇文章在php.net上躲过了类似的事情,但只是想知道是否有人有任何想法。真的有关系吗?我在我的开发盒上使用PHP 5.2.0,但肯定可以升级。

2 个答案:

答案 0 :(得分:4)

他们必须公开。您的类将以您在自己的代码中完全实例化的方式进行实例化和调用。

所以,除非你能弄清楚如何在任何类上公开调用私有方法,否则没有= P

答案 1 :(得分:0)

将实例化对象作为回调数组的第一个参数传递。

$session = new Session();
session_set_save_handler(
    array($session,'open'),
    array($session,'close'),
    array($session,'read'),
    array($session,'write'),
    array($session,'destroy'),
    array($session,'gc')
);