【发布时间】:2011-04-23 00:38:36
【问题描述】:
我们正在开发一个 Builder 类型的接口,它基本上构建了一个列表,用于对单个对象进行 CRUD 管理(因为我们使用 ActiveRecord 一个对象 == 一个数据库记录)。
为了灵活地为列表选项指定列值和参数,我们最初将回调参数实现为一个数组,如下所示:
'params' => array(
'static' => $this->institution->id,
array(
'method1' => array(
'method_name',
array('arg1', 'arg2')
),
'prop1' => 'id')
这种解决方案在笨拙等方面存在一些明显的缺点,但它确实有效。
在同事的建议下,我们尝试实现闭包,但由于类的另一个要求,我们必须序列化类中的所有数据,我们刚刚发现这些数据不适用于闭包。闭包的语法显然要简单得多:
'params' => array(
$this->institution->id,
function($obj) { return $obj->method_name($arg1, $arg2)->id; }
)
所以我的第一个问题是,是否有办法以可序列化格式(如字符串)存储闭包,然后在类被反序列化后将其转换回闭包?
或者任何人都可以提供解决此类回调问题的更好接口的建议吗?
【问题讨论】:
标签: php callback closures php-5.3