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 并与前一个字符串连接。