Задать вопрос
Driver86
@Driver86
Немодератор toster.ru

В чём разница между self и «ClassName»?

class A {
    public static $var = 1;
    public function hello() {
        echo self::$var;
        echo A::$var;
    }
}

Чем отличаться тут будут self::$var и A::$var ?
  • Вопрос задан
  • 491 просмотр
Подписаться 2 Оценить Комментировать
Решения вопроса 1
knetesin
@knetesin
Шпион
A::$var
вызов в контексте класса A

self::$var
вызов в контексте класса в котором определенно (в данном случае класса А)

static::$var
вызов в контекста текущего класса
т.е в случае с наследованием:
- если у вас будет класс B который наследуется от класса A и в котором будет переопределенно $var, оно будет использоваться,
- в случае с self, будет использоваться переменная оттуда где вызван self

т.е в вашем конкретном случае ничем, но лучше использовать static
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы