我正在学习关于闭包的更多信息,我想重新创建类似于Laravel路线功能的东西。
所以我有以下代码:
<?php
Class Foo{
public static function show($second, $third){
return "First " . $second . $third;
}
}
echo $my_var = Foo::show("Second ", function(){
return "Third ";
});
但如果我运行它,我会得到“可捕获的致命错误:类Closure的对象无法转换为字符串”错误。
如果我从Foo :: show函数中删除变量$ third,则没有给出错误,但当然我没有看到第三个变量。
我期待结果:第一名第二名;
是什么给出的?我只是在学习.. :)
答案 0 :(得分:0)
由于$third
是功能,要获得它的返回值,您必须调用它。函数调用通常使用()
完成,因此更改为:
return "First " . $second . $third();
这里,执行$third
参数传递的函数,返回字符串Third
并与前一个字符串连接。