代码之家  ›  专栏  ›  技术社区  ›  Chris Kloberdanz

PHP会话\设置\保存\处理程序中的回调方法可以是私有的吗?

  •  3
  • Chris Kloberdanz  · 技术社区  · 16 年前

    我正在用PHP编写一个定制的会话处理程序,并尝试将会话\设置\保存\处理程序中定义的方法设为私有。

    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方法设置为private时,它会对我咆哮。

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

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

    2 回复  |  直到 11 年前
        1
  •  4
  •   Peter Bailey    16 年前

    他们必须公开。类的实例化和调用方式与您在自己的代码中的方式完全相同。

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

        2
  •  0
  •   Muhammad    11 年前

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

    $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')
    );