php如何序列化/存储闭包(Closure)
1个回答
展开全部
实在需要序列化,可以用反射(Reflection),并直接操作代码文件获得上下文信息:/*** 创建一个反射:*/$reflection = new ReflectionFunction($closure);/*** 参数可以直接得到了:*/$params = $reflection-getParameters();/*** 获得Closure的函数体和use变量,形如:
* function($arg1, $arg2, ...) use ($val1, $val2, ...) {
* // 要获得这个部分的代码!* }* 办法很多,你可以直接用正则、字符串查找或者Tokenizer,等等等等。
* 比如可以先从reflection里得到函数的开始行和结束行:*/$startLine = $reflection-getStartLine();
$endLine = $reflection-getEndLine();
// 然后用str*这个,str*那个的函数来清理,细节不写了:
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询