努力了解关闭几天的情况。任何人都能指出我正确的方向吗?需要重写这个" create_function"作为一个lambda。
$section = preg_replace_callback('/{listing_field_([^{}]*?)_caption}/', create_function('$matches', 'global $config,$or_replace_listing_id,$lang;require_once($config[\'basepath\'].\'/include/listing.inc.php\'); return listing_pages::renderSingleListingItem($or_replace_listing_id, $matches[1],\'caption\');'), $section);
答案 0 :(得分:1)
您可以像这样定义一个闭包:
$myClosure = function ($args) {
// do something;
};
create_function
有两个参数 - 第一个是可调用参数的eval'd字符串,第二个是要执行的代码 - 所以你可以这样做:
$section = preg_replace_callback(
// Your regex search pattern
'/{listing_field_([^{}]*?)_caption}/',
// Your callback
function ($matches) use ($config, $or_replace_listing_id) {
require_once $config['basepath'] . '/include/listing.inc.php';
return listing_pages::renderSingleListingItem(
$or_replace_listing_id,
$matches[1],
'caption'
);
},
// Your subject
$section
);
请注意,我已将全局变量调用替换为通过use
将其导入到回调中,并删除了$lang
,因为您没有使用它。