PHP可以通过序列化serialize生成字符串传递对象、数组等格式,但serialize不支持序列化闭包。 有什么方法可以使用字符串传递闭包呢?
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
闭包是匿名函数,既然是匿名的,目测没法通过传递一个字符串名字来传递闭包。
但是,闭包也是可以序列化的 -- 使用这个库就可以了: https://github.com/jeremeamia...
用法示例代码中已经讲的很清楚了:
use SuperClosure\Serializer; $serializer = new Serializer(); $greeting = 'Hello'; $hello = function ($name = 'World') use ($greeting) { echo "{$greeting}, {$name}!\n"; }; $hello('Jeremy'); //> Hello, Jeremy! $serialized = $serializer->serialize($hello); // ... $unserialized = $serializer->unserialize($serialized); $unserialized('Jeremy'); //> Hello, Jeremy!
很简单有没有。
闭包是匿名函数,既然是匿名的,目测没法通过传递一个字符串名字来传递闭包。
但是,闭包也是可以序列化的 -- 使用这个库就可以了: https://github.com/jeremeamia...
用法示例代码中已经讲的很清楚了:
很简单有没有。