我搜索了网络,但未能找到解决以下挑战的方法:
我想以某种方式关联一个函数,该函数在调用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");
我的所有常量都可以再次使用。
非常感谢任何帮助。
答案 0 :(得分:2)
您要找的是session_set_save_handler()。尽管功能并不像您希望的那样精细,但它确实符合要求。
答案 1 :(得分:0)
除了使用自己的会话句柄外,还可以使用类来存储常量,将该对象存储在会话中,并在{{{}}上重建常量对象时使用magic method __wakeup
来编写常量。 1}}。