3

我正在用 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 函数设置为私有而没有任何错误,但是当我将 write 方法设为私有时,它会向我吠叫。

致命错误:从第 0 行的未知上下文中调用私有方法 Session::write()

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

4

2 回答 2

4

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

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

于 2008-10-29T22:21:36.980 回答
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')
);
于 2009-10-13T17:01:59.120 回答