ララベルの依存性注入の実装方法は何ですか?

Laravelでは依存性注入がサービスコンテナを通じて実現されています。クラスのインスタンスが必要な場合、コンストラクタで依存するクラスを直接宣言し、その後、Laravelが必要なインスタンスを自動的に解決してくれます。

例えば、UserRepositoryクラスに依存するUserServiceクラスがある場合、依存性の注入を以下のように実装することができます。

namespace App\Services;

use App\Repositories\UserRepository;

class UserService
{
    protected $userRepository;

    public function __construct(UserRepository $userRepository)
    {
        $this->userRepository = $userRepository;
    }

    public function getAllUsers()
    {
        return $this->userRepository->getAll();
    }
}

その後、コントローラー内で UserService クラスを使用する際に、Laravel は自動的にUserRepositoryのインスタンスを注入します。

namespace App\Http\Controllers;

use App\Services\UserService;

class UserController extends Controller
{
    protected $userService;

    public function __construct(UserService $userService)
    {
        $this->userService = $userService;
    }

    public function index()
    {
        $users = $this->userService->getAllUsers();
        return view('users.index', ['users' => $users]);
    }
}

この方法によって、依存性注入を実現し、コードをより柔軟でメンテナンスしやすくします。

bannerAds