What are the potential pitfalls of using self:: in abstract classes with inheritance in PHP?

Using `self::` in abstract classes can lead to unexpected behavior when the method is overridden in a child class. To ensure that the child class's method is called instead of the parent class's method, you should use `static::` instead of `self::`.

abstract class ParentClass {
    public function test() {
        static::overrideMe();
    }

    abstract protected function overrideMe();
}

class ChildClass extends ParentClass {
    protected function overrideMe() {
        echo "Child class method";
    }
}

$child = new ChildClass();
$child->test(); // Output: Child class method