Мне было интересно, какое ключевое слово является правильным в абстрактном классе php, когда я вызываю его собственную статическую функцию.
Вот упрощенный код, и я проверил оба ключевых слова — оба работают, но какое из них технически правильно?
<?php
abstract class B extends A{
function a(){
self::b("test"); //'self::' vs '$this->'
}
static function b($string){
echo "test";
}
}
?>
Из того, что я понимаю, если функция статическая, она должна использовать self в своем собственном классе для вызова статических функций. Также абстракция означает, что не может быть экземпляра этого класса, поэтому не будет ли $ this недействительным, даже если он работал без предупреждений?
Спасибо
Этот вопрос отличается от возможного дубликата, потому что я использую абстрактные классы, которые не могут иметь своих собственных экземпляров. Я понимаю разницу между собой и этим, но какой из них использовать в данном конкретном случае — это то, что я пытался выяснить, так как оба случая работают.
использование self
, то же самое, является ли класс abstract
или нет. $this
для экземпляра класса, который также действителен для использования в abstract
класс, если он был создан с помощью конкретного подкласса.
Других решений пока нет …