为什么注册服务无法在laravel中使用?

时间:2019-06-26 10:19:41

标签: php laravel laravel-5

我在app/services/SubscriptionService.php中创建了服务

然后将其导入控制器 使用App\Services\SubscriptionService;

然后在控制器中

public function subscribeIt(SubscriptionService $SubscriptionService, Request $request){
  $response = $SubscriptionService->subscribeIt($request);
  ...
}

但是由于执行的结果,我得到了Class App\Services\SubscriptionService does not exist 我需要在提供商中注册吗? 这是在提供商中

public function register()
    {
        //
        $this->app->bind('App\Services\SubscriptionService', function ($app)    {
          return new SubscriptionService();
        });
    }

2 个答案:

答案 0 :(得分:2)

请记住,PHP名称空间区分大小写。另外,请尽可能使用::class运算符。

对于代码,请更改

$this->app->bind('App\Services\SubscriptionService', function ($app)    {
    return new SubscriptionService();
});

对此

$this->app->bind(\App\Services\SubscriptionService::class, function ($app)    {
    return new SubscriptionService();
});

侧注::如果您不全局导入类,则需要在名称空间前加一个反斜杠。

答案 1 :(得分:2)

您似乎在app/services/SubscriptionService.php中创建了服务。

由于Laravel正在通过作曲者使用PSR-4自动加载,因此期望services目录被大写。

重命名文件夹以包括大写字母S,因此它应该从app/services/SubscriptionService.phpapp/Services/SubscriptionService.php