首页 > 解决方案 > 无法在自定义服务中获取请求数据?

问题描述

我有定制服务:

<?php
namespace App\Library\Services;

use Illuminate\Http\Request;

class RegisterCustomerService
{

    private $request;

    public function constructor(Request $request)
    {

        $this->request = $request;
    }

    public function register($role)
    {

        dd($this->request);

     }

}

dd($this->request);为什么我在执行 POST 请求时无法获取:

$customer = $registerCustomerService->register('customer');

我的服务提供商是:

class RegisterCustomerServiceProvider extends ServiceProvider
{
    /**
     * Register services.
     *
     * @return void
     */
    public function register(Request $request)
    {
        $this->app->bind('App\Library\Services\RegisterCustomerService', function ($app) {
            return new RegisterCustomerService($request);
        });
    }

    /**
     * Bootstrap services.
     *
     * @return void
     */
    public function boot()
    {
        //
    }
}

标签: laravellaravel-5

解决方案


您不需要在容器中绑定实例,因为如果您通过容器解析对象,Laravel 可以自动解析命名空间和类依赖项。

您可以从服务提供者中删除绑定并使用:

$customer = app('App\\Library\\Services\\RegisterCustomerService')->register('customer');

通过这种方式,容器将解析注册客户服务,并使用所有需要的依赖项(您的示例中的请求对象)创建它。


推荐阅读