Задать вопрос
sorry_i_noob
@sorry_i_noob

Пытаюсь разобраться с ранним и поздним статическим связыванием. Не могу понять, почему мой код выводит именно такие значения?

Здравствуйте! Есть вот такой код:

class A {
	static public $field = 1;

	public function get_field_self() {
		return self::$field;
	}

	public function get_field_static() {
		return static::$field;
	}

}

class B extends A {
	static public $filed = 2;
}

$b = new B();
echo $b->get_field_self();
echo nl2br("\r\n");
echo $b->get_field_static();


Почему get_field_static выводит 1 - также, как и get_field_self? Разве не должен он выводить 2?
  • Вопрос задан
  • 120 просмотров
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • Skillfactory
    Профессия Fullstack веб-разработчик на JavaScript и PHP
    20 месяцев
    Далее
  • Хекслет
    PHP-разработчик
    10 месяцев
    Далее
  • Нетология
    Веб-разработчик с нуля: профессия с выбором специализации
    14 месяцев
    Далее
Решения вопроса 1
glem1337
@glem1337
Потому что у вас в классе B – опечатка.
class B extends A {
  static public $filed = 2;  // должно быть $field, а не $filed
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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