Catchable fatal error: Object of class Closure could not be converted to string
Catchable fatal error: Object of class Closure could not be converted to string
我正在学习更多关于闭包的知识,我想重新创建类似于 Laravel 的路由函数的东西。
所以我有以下代码:
<?php
Class Foo{
public static function show($second, $third){
return "First " . $second . $third;
}
}
echo $my_var = Foo::show("Second ", function(){
return "Third ";
});
但是如果我 运行 它,我会得到 "Catchable fatal error: Object of class Closure could not be converted to string " 错误。
如果我从 Foo::show 函数中删除变量 $third,则不会出现任何错误,但我当然看不到第三个变量。
我期待结果:第一第二第三;
什么给了?我只是在学习.. :)
由于 $third
是一个 函数 ,要获得它的返回值 - 您 必须 调用它。函数调用一般都是用()
,所以改成:
return "First " . $second . $third();
此处,作为 $third
参数传递的函数被执行,返回字符串 Third
并与前一个字符串连接。
我正在学习更多关于闭包的知识,我想重新创建类似于 Laravel 的路由函数的东西。
所以我有以下代码:
<?php
Class Foo{
public static function show($second, $third){
return "First " . $second . $third;
}
}
echo $my_var = Foo::show("Second ", function(){
return "Third ";
});
但是如果我 运行 它,我会得到 "Catchable fatal error: Object of class Closure could not be converted to string " 错误。
如果我从 Foo::show 函数中删除变量 $third,则不会出现任何错误,但我当然看不到第三个变量。
我期待结果:第一第二第三;
什么给了?我只是在学习.. :)
由于 $third
是一个 函数 ,要获得它的返回值 - 您 必须 调用它。函数调用一般都是用()
,所以改成:
return "First " . $second . $third();
此处,作为 $third
参数传递的函数被执行,返回字符串 Third
并与前一个字符串连接。