How can global variables be avoided when passing dependencies to PHP classes for better code maintainability?

Global variables can be avoided when passing dependencies to PHP classes by utilizing dependency injection. This involves passing the required dependencies to a class through its constructor or setter methods, rather than relying on global variables. This approach improves code maintainability by making dependencies explicit and easily traceable.

class DependencyInjectedClass {
    private $dependency;

    public function __construct(Dependency $dependency) {
        $this->dependency = $dependency;
    }

    public function doSomething() {
        $this->dependency->doSomethingElse();
    }
}

$dependency = new Dependency();
$dependencyInjectedClass = new DependencyInjectedClass($dependency);
$dependencyInjectedClass->doSomething();