How can static methods in abstract classes affect the use of $this and self:: in PHP?

When using static methods in abstract classes in PHP, you cannot use $this to refer to the current object instance since static methods do not have access to object properties or methods. Instead, you should use self:: to refer to the current class in which the static method is defined.

<?php

abstract class AbstractClass {
    public static function staticMethod() {
        echo "Static method called in " . self::class . "\n";
    }
}

class ConcreteClass extends AbstractClass {
    public function test() {
        self::staticMethod();
    }
}

$object = new ConcreteClass();
$object->test();

?>