Вызов "дедушкиного" метода

dr.Pavka

Новичок
Вызов "дедушкиного" метода

Возник такой вопрос
как вызвать метод родителя родителя объекта?
метод не является статическим

то есть синтаксис типа такого

PHP:
parent::parent::methodName()
но так, конечно, не работает
 

dr.Pavka

Новичок
Автор оригинала: hussar
PHP:
parent::methodName();
Это типа шутка, или как?
Ведь в родителе метод уже переопределен
а нужно вызвать именно не переопределенный метод родителя родителя
 

ssv

Новичок
may be
parent::methodName();
в котором находится вызов метода его родителя parent::methodName();
 

Gorynych

Посетитель PHP-Клуба
Ведь в родителе метод уже переопределен, а нужно вызвать именно не переопределенный метод родителя родителя
нормально. Больше всего это похоже на ошибку в логике: может стоит родителя поменять?
 

hussar

In code we trust!
dr.Pavka
Про то что метод не определен ты не написал в своем вопросе.
Если надо вызвать не переопределенный метод, то тут прав Gorynych
 

dr.Pavka

Новичок
Может я не совсем понятно все описал
ПРимер:
PHP:
class A {
function method(){}
}
}
class B extends A {
function method(){
parent::method();
//И еще что то 
}
}
class C extends B {
function method(){
if($something){
parent::method();
}
else{
//а вот тут вызов method() класса A
}
}
}
вообщем один вариант нарисовался
call_user_func(array('имя дедушки','method'))

но это конечно не идеально
 

master_x

Pitavale XXI wieku
dr.Pavka
вообще такая иерархия (где большу двух уровней)-- плохой тон. и дело тут не в эстетике, тебе уже сейчас тяжело работать. и проблема тут кроется не в вызове метода дедушки а в архитектуре.
 

hussar

In code we trust!
Я не уверен, но можешь попробовать вот так:

PHP:
A::method();
 

dr.Pavka

Новичок
Автор оригинала: master_x
dr.Pavka
вообще такая иерархия (где большу двух уровней)-- плохой тон. и дело тут не в эстетике, тебе уже сейчас тяжело работать. и проблема тут кроется не в вызове метода дедушки а в архитектуре.
Хммм....
Поподробнее насчет двух уровневой иерархии....
Мне кажется это или поспешный вывод... или глупость....

если бы не было сложной иерархии то не следовало бы ООП использовать

-~{}~ 08.06.06 16:11:

Автор оригинала: hussar
Я не уверен, но можешь попробовать вот так:

PHP:
A::method();
И дернуть метод как статический?

-~{}~ 08.06.06 16:14:

Автор оригинала: hussar
Я не уверен, но можешь попробовать вот так:

PHP:
A::method();
Хотя .... call_user_func по сути тоже самое делает...
:(
 

hussar

In code we trust!
Может тебе сделать после метода А некий контролер который будет выбирать какой класс ему выбрать, а уже классы B и C наследовать непосредственно от А.

Это не совсем соответсвует твоему примеру, но может помоч.
 

dr.Pavka

Новичок
Собственно тема закрыта
В документации так и написано

The Scope Resolution Operator (also called Paamayim Nekudotayim) or in simpler terms, the double colon, is a token that allows access to static, constant, and overridden members or methods of a class.
Прошу прощения за свою невнимательность, просто как то уже привык, что двойное двоеточие употребляется только для вызова статических методов и констант.
 
Сверху