我在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,但肯定可以升级。
答案 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')
);