在session_start()上将函数关联到Fire?

时间:2010-06-16 13:53:16

标签: php session constants

我搜索了网络,但未能找到解决以下挑战的方法:

我想以某种方式关联一个函数,该函数在调用session_start独立于页面session_start被调用时执行。该函数用于恢复我存储在{{1}中的常量使用$_SESSION使它们可以再次用于任何PHP页面。

这对我来说似乎很简单,但我很确定PHP Session扩展不支持用户定义事件的注册。我想知道是否有人可能对此问题有所了解,因此我可以找出解决方案或停止尝试。

理想情况下,我想在运行时注册该函数,如下所示:

get_defined_constants()

所以在任何网页上,我都可以去:

$constants = get_defined_constants();

$_SESSION["constants"] = $constants["user"];

function event_handler () {
    foreach ($_SESSION["constants"] as $key => $value) {
        define($key, $value);
    }
}

register_handler("session_start", "event_handler");

我的所有常量都可以再次使用。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:2)

您要找的是session_set_save_handler()。尽管功能并不像您希望的那样精细,但它确实符合要求。

答案 1 :(得分:0)

除了使用自己的会话句柄外,还可以使用类来存储常量,将该对象存储在会话中,并在{{{}}上重建常量对象时使用magic method __wakeup来编写常量。 1}}。