可捕获的致命错误:类Closure的对象无法转换为字符串

时间:2017-10-01 08:19:37

标签: php laravel frameworks closures anonymous

我正在学习关于闭包的更多信息,我想重新创建类似于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,则没有给出错误,但当然我没有看到第三个变量。

我期待结果:第一名第二名;

是什么给出的?我只是在学习.. :)

1 个答案:

答案 0 :(得分:0)

由于$third功能,要获得它的返回值,您必须调用它。函数调用通常使用()完成,因此更改为:

return "First " . $second . $third();

这里,执行$third参数传递的函数,返回字符串Third并与前一个字符串连接。