Статический метод

Темы, не касающиеся фреймворка, но относящиеся к программированию в целом.
Ответить
Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Статический метод

Сообщение nizsheanez »

Или я тупой или в php нельзя переопределять статические методы? это так?

rak
Сообщения: 2038
Зарегистрирован: 2010.11.02, 23:40
Контактная информация:

Re: Статический метод

Сообщение rak »

почему нельзя? можно. А в чем проблема?

Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Статический метод

Сообщение nizsheanez »

вот в чем: self::method() вызывает метод текущего класса, а не того от которого был вызван, банальный пример: в AR метод getMetaData вызывает метод model, и даже если я переопределю метод model все равно из базового класса будет вызыван метод базового класса.

Аватара пользователя
Caveman
Сообщения: 152
Зарегистрирован: 2009.04.04, 20:56
Откуда: Москва
Контактная информация:

Re: Статический метод

Сообщение Caveman »

nizsheanez писал(а):вот в чем: self::method() вызывает метод текущего класса, а не того от которого был вызван, банальный пример: в AR метод getMetaData вызывает метод model, и даже если я переопределю метод model все равно из базового класса будет вызыван метод базового класса.
Для вызова переопределенного метода надо использовать static:: . Но это возможно только в php 5.3+

Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Статический метод

Сообщение nizsheanez »

Спасибо большое! Я сегодня как только на голову не вставал каких только выходов не находил.

Аватара пользователя
nizsheanez
Сообщения: 814
Зарегистрирован: 2011.04.29, 13:09
Откуда: Москва

Re: Статический метод

Сообщение nizsheanez »

Но вот в чем проблема: я хочу переопределить метод model, а он из кучи мест в фреймворке вызывается через self поэтому не получится использовать подход со static::

Ответить