What are the potential issues with using static methods in PHP, especially in the context of abstract classes?

Using static methods in PHP can make code harder to test and maintain, as they introduce tight coupling and hinder flexibility. In the context of abstract classes, static methods cannot be overridden by subclasses, leading to potential limitations in terms of polymorphism and extensibility.

abstract class AbstractClass {
    public function instanceMethod() {
        return static::staticMethod();
    }

    abstract protected static function staticMethod();
}

class ConcreteClass extends AbstractClass {
    protected static function staticMethod() {
        return "ConcreteClass";
    }
}

$instance = new ConcreteClass();
echo $instance->instanceMethod(); // Output: ConcreteClass