@balex777

Как правильно обратится из публичного метода к статичному в одном оъекте через self или $this?

Привет есть у меня два метода в объекте
первый
public function a() {

$var = $this->b();
}

private static function b() {
//some code
}


Так вот к методу b я могу обратится через $this $var = $this-.>b(); и все работает корректно, но так же могу обратится и через self $var = self::b(); и все так же прекрасно работает. вот тут я нашел примеры https://www.php.net/manual/ru/language.oop5.static.php
правда там из публичного метода обращаются к статическому свойству и почемуто используют self.
Кто знает как правильно использовать this или self и почему? ведь по сути в публичном методе $this не теряется, он теряется в статическом.
  • Вопрос задан
  • 111 просмотров
Решения вопроса 1
Adamos
@Adamos
Под капотом нестатический метод отличается от статического тем, что в функцию первым скрытым аргументом передается ссылка на текущий экземпляр класса - именно она и пишется в $this.
Пых же просто снисходительно относится к программисту и готов понять, что тот имел в виду, в любом случае.
Я бы рекомендовал использовать self просто для того, чтобы использование $this не наводило на неправильные мысли при будущем прочтении этого кода.

Теоретически могут быть отличия в цепочке наследования (когда self этого класса является родительским, а в наследнике, которым является $this, метод переопределен). Но на практике столкнуться с этим нереально, переопределение статики в наследниках - очень хреновое решение.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы