Абстрактный класс в php вызывает собственный статический метод ($ this против self)

Мне было интересно, какое ключевое слово является правильным в абстрактном классе php, когда я вызываю его собственную статическую функцию.

Вот упрощенный код, и я проверил оба ключевых слова — оба работают, но какое из них технически правильно?

<?php
abstract class B extends A{
function a(){
self::b("test"); //'self::' vs '$this->'
}

static function b($string){
echo "test";
}
}
?>

Из того, что я понимаю, если функция статическая, она должна использовать self в своем собственном классе для вызова статических функций. Также абстракция означает, что не может быть экземпляра этого класса, поэтому не будет ли $ this недействительным, даже если он работал без предупреждений?

Спасибо

Этот вопрос отличается от возможного дубликата, потому что я использую абстрактные классы, которые не могут иметь своих собственных экземпляров. Я понимаю разницу между собой и этим, но какой из них использовать в данном конкретном случае — это то, что я пытался выяснить, так как оба случая работают.

1

Решение

использование self, то же самое, является ли класс abstract или нет. $this для экземпляра класса, который также действителен для использования в abstract класс, если он был создан с помощью конкретного подкласса.

1

Другие решения

Других решений пока нет …