Back to Engineering Notes
Laravel ConceptsEngineering Note

2. Dependency Injection & Service Container

I use Laravel’s Service Container with Dependency Injection to keep my code clean, flexible, and loosely coupled.

🧠 Dependency Injection & Service Container (Laravel)

I use Laravel’s Service Container with Dependency Injection to keep my code clean, flexible, and loosely coupled.


🎯 Simple Idea

Instead of creating objects manually:

plain text
$userRepository = new UserRepository();

I let Laravel handle it:

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

👉 Laravel automatically resolves and injects the dependency


🔄 How I Structure It

UserController → depends on UserRepository
UserRepository → works with User model

👉 Controller doesn’t directly access the model

👉 Data logic is handled in the repository


🧩 Types of Dependency Injection

1. Constructor Injection (Most Used)

plain text
public function __construct(UserRepository $repo) {}
used for required dependencies
clean and consistent

2. Method Injection

plain text
public function index(UserRepository $repo) {}
used for one-time or specific cases

🧠 Why I Use This

no manual object creation
loose coupling between classes
easier to test (can mock dependencies)
cleaner and more maintainable code

📌 Practical Rule

> let Laravel resolve dependencies instead of creating them manually


💬 Summary

I combine:

Service Container → manages dependencies
Dependency Injection → injects automatically
Repository Pattern → separates data logic

👉 to build systems that are clean, scalable, and maintainable 👍