简单的问题,但很难回答?我在一个类方法中有以下匿名函数:
$unnest_array = function($nested, $key) {
$unnested = array();
foreach ($nested as $value) {
$unnested[] = (object) $value[$key];
}
return $unnested;
};在同一个类方法中,我有这个数组,用来保存匿名函数。也就是说,我使用内联create_function()创建了一个新的匿名函数,并且我想使用已经定义的匿名函数$unnest_array()。有可能吗?
$this->_funcs = array(
'directors' => array(
'func' => create_function('$directors', 'return $unnest_array($directors, "director");'),
'args' => array('directors')
)
);目前我得到的是“未定义的变量: unnest_array”。帮助?
发布于 2012-08-13 03:04:43
为什么你首先要使用create_function呢?闭包完全取代了create_function,使得它在5.3以后的所有版本中基本上都过时了。似乎您试图通过将第二个参数固定为"director"来partially apply $unnest_array。
除非我误解了您的意思,否则您应该能够通过使用闭包/匿名函数(未经测试)来实现相同的结果:
$this->_funcs = array(
'directors' => array(
'func' => function($directors) use ($unnest_array)
{
return $unnest_array($directors, "director");
},
'args' => array('directors')
)
);use ($unnest_array)子句是访问闭包父作用域中的局部变量所必需的。
https://stackoverflow.com/questions/11924916
复制相似问题