Autor Zpráva
zaciatocnik111
Profil *
existuje v PHP nejaka moznost ako vytvorit instanciu triedy, ktorej nazov mam ulozeny v premennej? viem ze v c# sa to da...
Majkl578
Profil
$trida = 'myClass';
$instance = new $trida();
zaciatocnik111
Profil *
no dik, ze to bude az take jednoduche ma fakt nenapadlo, dynamicke jazyky maju svoje vyhody
bohyn
Profil
zaciatocnik111
Toto reseni bych povazoval za nouzove vzhledem k neprehlednosti. Pokud to jde tak bych volil spis variantu
if($trida == "myClass") {
  $instance = myClass();
}
else {
  $instance = myOtherClass();
}
AM_
Profil
bohyn
neřekl bych, samozřejmě zprasit se to na tomhle základě dá, ale samo o sobě na tom nic špatného není - lepší než if s deseti větvemi (předpokládám, že tam nerozlišuje pouze 2 třídy, jak to uvádíš v příkladu), a případné možnosti bych vedle toho hodil do komentáře, pokud je vůbec možné výčet možností předvídat (nejedná se např. o nějaké načítání rozšiřitelných modulů) a přehlednost to vyžaduje.
Třeba
$instance = new $class();
/*
moznosti (dedi po vyrobek):
-papir
-kelimek
-sesit
-...
*/
Aesir
Profil
Nač to vymýšlet znovu, když už to udělal někdo před námi? :)
AM_
Profil
Aesir
To je přesně to, co psal bohyn. Pokud bude mít ta třída mít víc než pár potomků nebo třeba ani předem nebudou známí, tak je to předem nepoužitelné.
Aesir
Profil
AM_:
To je přesně to, co psal bohyn.
vím, však jsem to pro tazatele chtěl jen pojmenovat :)

Pokud bude mít ta třída mít víc než pár potomků nebo třeba ani předem nebudou známí, tak je to předem nepoužitelné.
což se dá velmi jednodušše ošetřit

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: