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