What are some potential pitfalls of using static methods for dependency injection in PHP?

Using static methods for dependency injection in PHP can lead to tightly coupled code, making it difficult to test and maintain. To solve this issue, consider using a dependency injection container to manage dependencies and decouple your classes.

class DependencyInjectionContainer {
    private $dependencies = [];

    public function __construct() {
        $this->dependencies['DependencyClass'] = new DependencyClass();
    }

    public function getDependency($dependency) {
        return $this->dependencies[$dependency];
    }
}

class MyClass {
    private $dependency;

    public function __construct(DependencyInjectionContainer $container) {
        $this->dependency = $container->getDependency('DependencyClass');
    }

    public function doSomething() {
        // Use $this->dependency here
    }
}

$container = new DependencyInjectionContainer();
$myClass = new MyClass($container);
$myClass->doSomething();