Jak zavolat constructor u rodičovské třídy v php jinak než z potomka třídy?

Karman

Ahoj, volám class s názvem Adresy. Tato class s názvem Adresy je extends, čili má rodiče s názvem Region.
Kód: [Vybrat]
class Region {
}

class Adresy extends Region {
}

Jak mám udělat to, abych nemusel z každé class (která je rodič class Region), volat parrent::__constructor('par1', 'par2') ?

Poradí někdo?


Kit

Vzhledem k tomu, že Adresy není Region, ale spíš Region je součástí Adresy, zrušil bych rodičovskou vazbu.

dodo

nedefinovat v potomkovi konstruktor :)
region mi pride skor ako atribut adresy, ale neviem co riesis, takze len tip

Kozzi

Ahoj, volám class s názvem Adresy. Tato class s názvem Adresy je extends, čili má rodiče s názvem Region.
Kód: [Vybrat]
class Region {
}

class Adresy extends Region {
}

Jak mám udělat to, abych nemusel z každé class (která je rodič class Region), volat parrent::__constructor('par1', 'par2') ?

Poradí někdo?

Tak za prve trida by se nemela jmenovat Adresy ale spis Adresa. Mnozne cislo se pouziva pro oznaceni kolekci objektu atd. Jinak jak uz bylo receno vykasli se na dedicnost a pouzi kompozici. Takze si vytvor tridu Adresa a tridu Region a ve tride Adresa vytvor property typu region.

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Dědičnost by se měla primárně používat k modelování vazby "něco je něco-obecnějšího".

Např. z třídy Animal může dědit třída Mammal a z ní třída Cat a Dog. Kočky i psi jsou savci a savci jsou zvířata.

Nicméně u adresy a regionu je použití dědičnosti nevhodné - tady spíš adresa patří do regionu, nikoliv adresa je region.

Vazbu "patří do" je lepší modelovat kompozicí:

Kód: [Vybrat]
class Region {
}

class Adress {
    private Region _region;

    function __construct(Region region) {
       _region = region;
    }

    function getRegion() {
        return _region;
    }
}

Udělat správně objektový návrh dat není úplně sranda. To, že je chyba v logice programu, nevadí zas až tolik - snadno se opraví (byť samozřejmě je tu riziko, že před zákazníkem bude člověk vypadat jako kkt). Ale pokud jsou špatně namodelovaná data, tak se to může později projevit tím, že celý softwarový produkt (a je jedno, jestli malý web nebo velký systém) bude ve stavu FUBAR* .

* http://en.wikipedia.org/wiki/Military_slang#FUBAR


Novy

Častá chyba začátečníků, nadúživáni dědičnosti.

Kit

Častá chyba začátečníků, nadúživáni dědičnosti.
Častých chyb začátečníků je hromada. Nadužívání getterů, setterů, víceslovních názvů objektů i metod,... Některým to i zůstane nafurt.

eMko

  • ****
  • 456
    • Zobrazit profil
    • E-mail
Problém je, že častých chyb začátečníků se občas doupouští i lidé s 10 a více letou praxí...