What is the potential issue with inheriting a PDO connection in PHP classes?

Inheriting a PDO connection in PHP classes can lead to tightly coupling the database connection with the class, making it harder to manage and test. To solve this issue, it is recommended to use dependency injection to pass the PDO connection as a parameter to the class constructor.

class Database {
    private $pdo;

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

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

// Usage
$pdo = new PDO("mysql:host=localhost;dbname=mydatabase", "username", "password");
$db = new Database($pdo);
$result = $db->query("SELECT * FROM users");