How can dependency injection be implemented effectively when using PDO in PHP?

When using PDO in PHP, dependency injection can be implemented effectively by creating a database connection class that accepts a PDO object as a parameter in its constructor. This allows for better testability and flexibility in managing the database connection throughout the application.

class DatabaseConnection {
    private $pdo;

    public function __construct(PDO $pdo) {
        $this->pdo = $pdo;
    }

    public function query($sql) {
        return $this->pdo->query($sql);
    }

    // Other database methods can be added here
}

// Usage example
$pdo = new PDO("mysql:host=localhost;dbname=mydatabase", "username", "password");
$databaseConnection = new DatabaseConnection($pdo);

$result = $databaseConnection->query("SELECT * FROM table_name");