Ben bir sınıf genişletmek ve yöntemlerden birini geçersiz kılmak için çalışıyorum. o sınıf A. Benim sınıf, sınıf B aramak sağlayan, korumalı bir yöntem overiding edilir. C Sınıfı A sınıfı genişletir ve D Sınıfı Sınıf D sınıfı C. İç uzanır, ben üzerine yazmak çalışıyorum yöntemi de burada uzar ve ebeveyn :: mymethodimoverriding çağırır. Ben B sınıfı overiding yaşıyorum ve tabii ki B ile A uzatmak ve düşmemesi beri bu değişiklikler D sırıtmak olamaz yöntemdir sınıf A'da ona gider böylece bu yöntem C sınıfı yok sınıf hiyerarşisi doğrultusunda. Ben yanlış olabilir, bu yüzden lütfen beni düzeltin olabilir.
benim sınıf b denir ve D sınıfı olarak adlandırılan alır sonra koştum yani eğer A yöntemini çalıştırır ve ben batmıştı ne yazar. Ben iş için bu almak için bir yolu olmalı düşünüyorum, ben sadece bir şey eksik.
Orada SetTitle için bir çağrı ve ben "NewExample" olarak ayarlayın Benim sınıfımda için "örnek" olarak ayarlandığında A sınıfı gördüğünüz gibi İşte bir örnek vardır. Benim sınıf çok D sınıfı çağrıldığında geri ebeveyne gider ve "Örnek" için başlığını ayarlar D sınıfı önce çağrılır oluyor. Ne olmasını istiyorum B sınıfı çalışır ve ben daha sonra D sınıfı çalıştırmak ve bunun yerine yerine benim sınıf vurmak için ben uzanan am sınıf isabet bunu gerekenleri yapmak için ayarlar. şey ben D sınıfı benim sınıf uzatmak yapabilirsiniz sanmıyorum. yani şimdi ben uzanan am sınıfı vuruyor
class A{
protected function _thefunction(){
setTitle("Example");
}
}
class B extends A{
protected function _thefunction(){
My new code here
setTitle("NewExample");
}
}
class C extends A{
nothing that matters in here for what I am doing
}
class D extends C{
protected function _thefunction(){
parent::_thefunction();
additional code here
}
}
Ben yapıyorum denedim
class D extends C{
protected function _thefunction(){
B::_thefunction();
additional code here
}
}
ve ben bu statik bir yöntem olmadığı konusunda hatalar var