Новое в PHP 5.3.0: Позднее статическое связывание

  • 08, 05, 2009
  •  
  •  php, Programming
  • Комментарии к записи Новое в PHP 5.3.0: Позднее статическое связывание отключены

Поздним называется потому, что использование static:: будет означать вычисление класса/объекта, к которому будет относиться вызов, в момент вызова этой конструкции.
А статическим — потому что работает и для статических методов (но не только для них).

Для self:: и __CLASS__ всё по-старому — они ссылаются на класс, в котором определён метод.

Пример 1. Раннее связывание

Использование позднего статического связывания
В отличие от предыдущего примера, использование позднего статического связывания (при помощи static::) позволяет попробовать обратиться к методу первоначально вызванного класса на этапе выполнения.
Таким образом, предыдущий пример превращается в:

Пример 2. Простой пример позднего статического связывания

Надо заметить, что static:: — не то же самое для класса, что и $this-> для объекта ($this-> следует правилам наследования, а static:: — нет).

Пример 3. Использование в нестатическом контексте

Позднее статическое связывание не пойдёт выше, к предкам, а остановится на вызове метода инициировавшего его класса, тогда как self:: и parent:: будут всети себя согласно правилам наследования.

Пример 4. Переадресуемые и непереадресуемые вызовы

Документация

Comments are closed.