What are the potential pitfalls of using global dependencies like \Database::getInstance() in PHP code?

Using global dependencies like \Database::getInstance() in PHP code can lead to tightly coupled code, making it difficult to test and maintain. It can also create hidden dependencies that are not obvious when looking at the code. To solve this issue, it is recommended to use dependency injection to pass the necessary dependencies to the classes that need them.

class MyClass {
    private $database;

    public function __construct(Database $database) {
        $this->database = $database;
    }

    public function myMethod() {
        // Use $this->database instead of \Database::getInstance()
    }
}

$database = new Database();
$myClass = new MyClass($database);
$myClass->myMethod();