Laravel 5 错误响应内容必须是实现“uuuToString(),”的字符串或对象;“对象”;在服务提供程序中绑定时给定

Laravel 5 错误响应内容必须是实现“uuuToString(),”的字符串或对象;“对象”;在服务提供程序中绑定时给定,laravel-5,service-provider,Laravel 5,Service Provider,我试图通过绑定到Laravel5服务容器的接口解析一个具体的类 我的混凝土课 我的界面 我的服务提供商 绑定本身可以工作。如果在混凝土类的构造函数中有一个dd,我可以在浏览器中看到它,但是当我尝试使用测试控制器中的接口时: use App\Services\FileMakerInterface; class DevController extends Controller { public function testFmConnect(FileMakerInterface $fm){

我试图通过绑定到Laravel5服务容器的接口解析一个具体的类

我的混凝土课 我的界面 我的服务提供商 绑定本身可以工作。如果在混凝土类的构造函数中有一个
dd
,我可以在浏览器中看到它,但是当我尝试使用测试控制器中的接口时:

use App\Services\FileMakerInterface;

class DevController extends Controller
{
    public function testFmConnect(FileMakerInterface $fm){
        return $fm;
    }
}
我得到错误“响应内容必须是实现_toString()”的字符串或对象,“对象”给定

我已经看过了这种绑定的其他例子,我没有看到任何我做错的地方


有什么想法吗?

问题在于您的
testFmConnect()
控制器操作。您直接返回
FileMakerInterface
实现,但是控制器方法应该返回一个响应对象

如果您只是想检查方法返回的内容,可以在控制器操作中使用
dd()
函数:

类DevController扩展控制器
{
公共函数testFmConnect(FileMakerInterface$fm)
{
dd(fm);
}
}

facepalm,这正是我想要做的!有趣的是,你可以盯着一段代码看一会儿,却看不到明显的缺陷。感谢您在这个问题和绑定接口问题上的帮助。非常感谢@克里斯奇米兹:没问题。希望你在享受拉雷维尔否则!绝对喜欢。即使在我的理解上有这些小小的障碍/差距,但与之合作和学习仍然很有趣。@ChrisSchmitz很高兴听到!:)
namespace App\Services;

interface FileMakerInterface {

} 
namespace App\Providers;

use Illuminate\Support\ServiceProvider;
use App\Services\SSCSimpleFM;

class FileMakerServiceProvider extends ServiceProvider
{

    public function register()
    {
        $this->app->bind('App\Services\FileMakerInterface', function ($app){
            $username = env('FM_USERNAME');
            $password = env('FM_PASSWORD');
            $host     = env('FM_HOST');
            $database = env('FM_DATABASE');
            return new SSCSimpleFM(compact('username', 'password', 'host', 'database'));
        });
    }
}
use App\Services\FileMakerInterface;

class DevController extends Controller
{
    public function testFmConnect(FileMakerInterface $fm){
        return $fm;
    }
}