ララベルの依存性注入の実装方法は何ですか?
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]);
}
}
この方法によって、依存性注入を実現し、コードをより柔軟でメンテナンスしやすくします。