talam0nal
@talam0nal
PHP/Laravel разработчик

Чем отличаются self::, parent:: и static:: в PHP?

С self и parent вроде понятно, но зачем нужен static::? И что такое позднее статическое связывание?
  • Вопрос задан
  • 6334 просмотра
Решения вопроса 2
arutyunov
@arutyunov
Mooza.ru — Делаем сайты
Проще объяснить на примере:

class A {
  public static function getValSelf()
  {
  	return new self();
  }

  public static function getValStatic()
  {
  	return new static();
  }
}

Class B extends A {
}

var_dump(get_class(B::getValSelf())); // 'A'
var_dump(get_class(B::getValStatic())); // 'B'
Ответ написан
Комментировать
delphinpro
@delphinpro Куратор тега PHP
frontend developer
Позднее связывание — это значит привязка будет происходит не на этапе компиляции кода, а на этапе его исполнения.
В примере Кирилл Арутюнов это видно — self всегда указывает на тот класс, в котором оно объявлено, а static — на класс в котором он по факту будет вызван с учетом всех наследований.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

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