Laravel 5, как правильно сделать объект? - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть служба для UserController

class UserService
{

  protected $user;

  public function __construct(User $user) {
      $this->user = $user;
  } 

  public function getAll()
  {
     $this->user->get();
     // do something with $this->user
  }

  public function update($data)
  {
      return $this->user->update($data);
  }

}

class UserController extends Controller
{

  private $service;

  public function __construct(UserService $service)
  {
      $this->service = $service; // < ------ error
  }

  public function index(User $user)
  {
      return $this->service->getAll();
  }

  public function update(Request $request, User $user)
  {
      return $this->service->update();
  }

}

Необходимо, чтобы избежать ситуации, когда я должен сделать объект внутри каждого метода контроллера

Как я могу сделатьобъект из UserService с параметром $ user в конструкторе для всех методов контроллера?

1 Ответ

0 голосов
/ 17 декабря 2018

Без сообщения об ошибке довольно сложно ответить на ваш вопрос.Это может быть что угодно, от опечатки до полной тупиковой ситуации при загрузке ваших зависимостей.

Тем не менее.Вы, вероятно, не добавили свою услугу в контейнер услуг: https://laravel.com/docs/5.7/controllers#dependency-injection-and-controllers

Создайте ServiceProvider для своей услуги следующим образом:

<?php

namespace App\Providers;

use YourNameSpace\UserService;
use Illuminate\Support\ServiceProvider;

class UserServiceProvider extends ServiceProvider
{
    /**
     * Register bindings in the container.
     *
     * @return void
     */
    public function register()
    {
        $this->app->singleton(UserService::class, function ($app) {
            return new UserService($app->user));  // Not sure it's $app->user. But you probably know what to do.
        });
    }
}

Затем выполнитеcomposer dump-autoload и должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...