关闭表现出乎意料

时间:2013-09-20 20:20:26

标签: php function closures

我在函数内部有一个闭包,但是当它被调用时,返回值不是我预期的那样。

public function test($name, $content)
{
     $test = "\t<div id=\"{$name}\">{$content()}</div>\n";
     return $test;
}

而不是返回......

<div id="name">content</div>

而是返回......

content
<div id="name"></div>

如果您有任何想法如何解决这个问题以便正确显示那么我会非常高兴,提前谢谢。

2 个答案:

答案 0 :(得分:2)

你没有展示$content()功能,但从我认为打印内容而不是返回它的症状。会发生的是test()函数调用显示内容的$content()函数并且不返回任何内容,然后test()返回,而其他内容则打印返回值。

要修复它,只需让$content()返回内容而不是打印它。

答案 1 :(得分:-1)

让闭包执行并捕获返回的内容。然后插入结果:

public function test($name, $content)
{
     $insert = $content();
     $test = "\t<div id=\"{$name}\">{$insert}</div>\n";
     return $test;
}