What is Dependency Injection

Dependency Injection (DI) is a design pattern used in software development to improve code modularity and testability. It allows a class to receive its dependencies from external sources rather than creating them internally. This approach decouples the code, making it easier to manage and test.

By injecting dependencies, you can switch implementations easily, facilitate unit testing by providing mock dependencies, and promote a clean architecture. Various types of Dependency Injection exist, including constructor injection, setter injection, and interface injection.

<?php interface Logger { public function log($message); } class FileLogger implements Logger { public function log($message) { // Logic to write log to a file echo "Logging to file: " . $message; } } class Application { private $logger; // Constructor injection public function __construct(Logger $logger) { $this->logger = $logger; } public function run() { $this->logger->log("Application is running."); } } // Usage $logger = new FileLogger(); $app = new Application($logger); $app->run(); ?>

Dependency Injection DI software design pattern code modularity testability PHP development