是否可以在会话var中存储匿名函数并在以后使用它?
例如:
$func = "echo $str;";
$_SESSION['myfunc'] = create_function('$str',$func);
当我调用$_SESSION['myfunc']('Hello')
时,它在创建它的页面上工作正常。但是当在另一个页面中调用时,我收到错误
调用未定义的函数()
其他会话变量可用,所以这不是问题。在会话数据中,我看到了对lambda的引用,但我无法让它工作。
答案 0 :(得分:3)
您无法在会话变量中存储实际函数 - 您在会话中存储的变量需要是可序列化的,而lambdas则不是。此外,这似乎是一件非常令人费解的事情。
为什么不存储要调用的函数的名称,然后以这种方式执行?或者,如果您真的想要实现这一点,您可以将函数字符串存储在会话中,然后在重新启动会话后创建该函数。
但是,几乎可以肯定有更好的方法来达到你想要的效果。
答案 1 :(得分:3)
答案 2 :(得分:0)
您希望将函数存储在会话变量中的原因意味着您做错了什么。这个策略的目的是什么?