SORU
13 EKİM 2009, Salı


Nasıl PHP bir sınıf üst aramasını'in ana'in kurucu muyum

Onun ebeveyni PHP çağrısında bir sınıf lazımebeveynin(büyükbaba?) üst kurucu çağırmadan yapıcı.

// main class that everything inherits
class Grandpa 
{
    public function __construct()
    {

    }

}

class Papa extends Grandpa
{
    public function __construct()
    {
        // call Grandpa's constructor
        parent::__construct();
    }
}

class Kiddo extends Papa
{
    public function __construct()
    {
        // THIS IS WHERE I NEED TO CALL GRANDPA'S
        // CONSTRUCTOR AND NOT PAPA'S
    }
}

Bunu yapmak için garip bir şey olduğunu biliyorum ve kötü kokmayan bir yol bulmaya çalışıyorum ama yine de, eğer mümkün olup olmadığını merak ediyorum.

EDİT

Seçilen cevap için gerekçe post gerektiğini düşündüm. Aramak isteyen sebebi; bu sorunu en şık solutionto "büyükbaba veya büyükanne tüm değerleri koruyarak," yapıcı. Ne de OOP dostu kesinlikle en iyi yaklaşım değil, ama bu soruyu sorduğum şey bu değildi.

Herkes için daha sonraki bir tarihte bu soruyu karşıya geliyorBaşka bir çözüm bulun lütfen. Sınıf yapısı üzerinde büyük hasara yol olmadığını çok daha iyi bir yaklaşım bulmak mümkün oldu. Sen de öyle yapmalısın.

CEVAP
13 EKİM 2009, Salı


Çirkin geçici Papa kod oluşturucu bulunan ayrıştırmak için istemiyorsanız gösteren boolean bir parametre geçmek olacaktır. ben.e:

// main class that everything inherits
class Grandpa 
{
    public function __construct()
    {

    }

}

class Papa extends Grandpa
{
    public function __construct($bypass = false)
    {
        // only perform actions inside if not bypassing
        if (!$bypass) {

        }
        // call Grandpa's constructor
        parent::__construct();
    }
}

class Kiddo extends Papa
{
    public function __construct()
    {
        $bypassPapa = true;
        parent::__construct($bypassPapa);
    }
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Attempts at least

    Attempts at

    1 Ocak 2007
  • KendrickLamarVEVO

    KendrickLama

    9 ŞUBAT 2011
  • Tylerron

    Tylerron

    6 AĞUSTOS 2006