VDS за 300р от нашего партнера SpaceWeb
[53]
13 Фев 2012, 12:20

Зачем нужен оператор static::method

Привет!

Подскажите, зачем нужен оператор static::method. Я открыл чужой исходник, и мне нужно в нем разобраться. Единственное, что не понятно, это static::method. У меня в книжке написано только про self::method и parent::method.

Комментарии (1)
grom 13.02.2012 15:49

Это позднее статическое связывание.

Обычные правила наследования неприменимы к статическим вызовам. Ключевое слово static пытается отнести вызов к текущему классу, а не к классу, в котором была определена функция.

class A 
{
public static function who()
{
echo __CLASS__;
}

public static function test()
{
static::who();
}
}

class B extends A
{
public static function who()
{
echo __CLASS__;
}
}

B::test(); // B

Или можно использовать функцию get_called_class()

class A 
{
public static function test()
{
echo get_called_class();
}
}

class B extends A
{

}

B::test(); // B

В случаях с ключевым словом self, метод test выдавал был «A».
+1

Добавить комментарий

Войдите, чтобы написать о чем-нибудь...
Вход Регистрация
Web.onRails
Найди ответ на любой вопрос по Веб-разработке!
задать вопрос...
Вы можете разместить Рекламный пост самостоятельно, либо отправив контент по адресу admin@webonrails.ru→ Оплата здесь ←Неоплаченные посты удаляются.
Метки:
Лучшее
[52]
16 Окт 2011, 15:38
Вывести все элементы POST
[просмотров 21782]
[100]
19 Дек 2014, 16:16
User-agent для Internet Explorer 11
[просмотров 15952]
[74]
31 мая 2011, 11:48
Python проверка существования переменной
[просмотров 12954]
[125]
21 Июл 2011, 14:04
Python Imaging Library (PIL)
[просмотров 9984]
[4]
10 Окт 2018, 15:33
Как запретить просмотр сайта по IP?
[просмотров 9867]
[315]
11 Авг 2011, 00:21
Спецификация HTML5 от W3C
[просмотров 7413]
[50]
31 Дек 2011, 14:57
Cron запускать раз в неделю
[просмотров 6564]

Вести с Хабра