2016-12-15 6 views
-1

Привет У меня есть классы с функциямиOverride родитель :: функция

class A{ 
    static function a(){ 
     return 'aaa'; 
    } 
} 
class B extends A{ 
    static function b(){ 
     //some code 
     return parent::a(); 
     //some code 
    } 
} 

Теперь я должен написать класс «C», мне нужны методы изменения «а» вернуть другую вещь, но не хочет переопределить B :: b(), потому что он действительно большой и работает нормально.

class C extends D{ 
    static function b(){ 
     return parent::b(); 
    } 
} 

class D extends B{ 
    static function a(){ 
     return 'ddd'; 
    } 

} 
C::b() //return aaa, but I need ddd 
+0

Почему вы вызываете 'parent :: a' from' b'? Почему бы не 'self :: a' /' static :: a'? И почему все эти «статические» начинаются? – deceze

+0

Как сказал deceze, используйте self :: a() вместо parent :: a() в классе B – Yoleth

+0

классы A и B не мои, и я не могу их изменить. И они статичны, потому что они статические методы :) –

ответ

0

Я знаю, что это старый пост, но я хотел посмотреть, заметили ли вы очевидное. В вашем примере у вас есть C::b(), который возвращает parent::b, исходящий от B, а не D. Вы хотели получить доход от D::a, который будет C::a()