Zadejte hledaný výraz...

Volani metody z jine třídy

Ahojte ako sa dá OOP PHP volať metoda z inej triedy?
príklad: Mám jednu tridu pre prácu s mysql, a chcem funkcie mysql vyuzit v novej triede.
Napadlo ma, že to spravím cez deničnosť ale aj tak neviem ako tú zdedenú funkciu zavolat:/
ďakujem za každú radu:)
18. 8. 2011 14:55:44
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668171
sysline
verified
rating uzivatele
(2 hodnocení)
18. 8. 2011 15:00:41
18. 8. 2011 15:00:41
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668170
hm
verified
rating uzivatele
(20 hodnocení)
18. 8. 2011 15:01:42
pokud tridu zdedis volas metodu primo $this->metoda() pokud chces volat metodu jine tridy, vetsinou se proste vytvori $trida = new Trida(); a nasledne zavola $trida->metoda(); kdy je vhodne pouzit to a kdy to je v podstate zavisle na tom zda spolu tridy souvisi do takove miry ze ej vhodne je dedit tedy v podstate rozsirovat ci nikoliv... Lze taky vyuzit statickych metod, ale to bych prilis nedoporucoval, alespon ne ve vetsine pripadu (nekdy se naopak hodi ke zjednoduseni kodu a prace s nim)...
18. 8. 2011 15:01:42
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668169
sysline
verified
rating uzivatele
(2 hodnocení)
18. 8. 2011 15:08:43
panecku na nebicku, ty to vidis... ach jo....
18. 8. 2011 15:08:43
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668168
Díky za rýchlu odpoveď. Presne takto si myslím aj ja že to má fungovať len mi to hádže chybu
class Test_class extends Mysql_class{
function pocet_radku($q) {
$pocet_radku= $this->rows_number($q); //na tomto riadku zadze chybu
echo "pocet radku je:".$pocet_radku;
}
}
18. 8. 2011 15:10:36
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668167
Dědičností určitě ne. Předejte si objekt, který chcete volat, jako parametr konstruktoru nebo jiné metody.
Metoda, kterou voláte, musí být veřejná.
Jde to taky statickou metodou, ale těm se vyhýbejte, pokud pro ně nemáte opravdu dobrý důvod.
18. 8. 2011 15:12:03
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668166
ďakujem, idem to vyzkúšať. Tá dedičnosť teda cez to this nebude fungovať?
18. 8. 2011 15:15:44
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668165
hm
verified
rating uzivatele
(20 hodnocení)
18. 8. 2011 15:15:44
Napsal sysline;691080
panecku na nebicku, ty to vidis... ach jo....
rekl jsem snad uplnou blbost? pokud ano, oprav me prosim, tyhle vykriky jsou preci zbytecne :)
18. 8. 2011 15:15:44
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668164
hm
verified
rating uzivatele
(20 hodnocení)
18. 8. 2011 15:16:42
Napsal alucky;691086
ďakujem, idem to vyzkúšať. Tá dedičnosť teda cez to this nebude fungovať?
pro tvoji potrebu je dedicnost spatna volba a urcite vyuzij prikladu zeshora... A precti si o dedicnosti, protoze ta se vyuziva v dost specifickych situacich
18. 8. 2011 15:16:42
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668163
sysline
verified
rating uzivatele
(2 hodnocení)
18. 8. 2011 15:22:30
Ano rekl, jelikoz kdyz neco dedis a chces volat metodu rodicovske tridy, tak nepouzivas $this ale parent.
Pouziti statickych metod je naprosto legitimni prostredek, ktery je velmi casto mnohem vhodnejsi nez vytvareni zbytecnych instanci objektu. A napriklad velmi dobre nahrazuje zbytecne predavani instance objektu, tak jak zminuje Martin v prispevku nize. Tudiz proc bys ho nedoporucoval mi neni jasne. A uznavam, ze muj vykrik byl zbytecny, ale vzhledem k tomu, ze jsem tesne pred tim cetl tvoji nabidku na skoleni, tak jsem se proste neudrzel.
18. 8. 2011 15:22:30
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668162
hm
verified
rating uzivatele
(20 hodnocení)
18. 8. 2011 15:28:59
volani pres parent bych pouzil spise pro volani metody ktere se vzjemne prekryvaji tedy trida A ma metodu Menu a trida B dedi tridu A a ma takjtez metodu Menu ale ja potrebuji zavolat tu z tridy A takze volam parent::Menu()... jinak lze preci zavolat pres $this a ostatne to tak delam... nebo jsem zas uplne mimo... ted jsi me teda prekvapil, to uznavam :) - budu rad kdyz mi tvou uvahu osvetlis lepe, proc konkretne volat pres parent :)
Jinak staticke metody jsou uplne legitimni, ale ne vzdy se z mnoha duvodu hodi a je potreba si rozmyslet kdy je vhodnejsi to a kdy to... Staticke metody maji napriklad promenne v tride spolecne kdykoliv je kdekoliv zavolas, kdyz ale vytvoris objekt tak promenne sdilis jen v konkretnim objektu nikoliv v ramci cele tridy v cele aplikaci... takze ais proto bych je ne vzdy doporucoval :) ale tak uznavam ze nekdy je proste sttaicka metoda rychlejsi a lepsi - v mnoha pripadech ale nevhodna :)
18. 8. 2011 15:28:59
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668161
Sysline, on ji chce prostě zavolat, ne přepsat. Kdyby ji zdědil (což nedoporučuju), nemusí explicitně volat rodiče.
Vložení parametrem je rozhodně lepší než statické metody, protože přesně řídíš, kdo má k čemu přístup, a můžeš změnit klientovu strategii, aniž bys ho musel přepisovat.
Kdybych pokračoval ve svém příkladu
Zatímco kdybys volal DB staticky, musíš přepsat klienta, aby volal jinou třídu.
18. 8. 2011 15:33:25
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668160
sysline
verified
rating uzivatele
(2 hodnocení)
18. 8. 2011 15:37:25
To je spatny pohled na vec, nejde o to, kdy bys to volal ani jestli se prekryvaji nebo ne. pres this zkratka volas metodu tridy, ve ktere jsi to znamena childu nikoliv rodice. To znamena, pokud potrebujes volat metodu rodice, tak bys mel vzdy pouzit parent. Vychazet z predpokladu, ze pouzita metoda neni pretizena a nikdy nebude, je z pohledu OOP dost spatne.
18. 8. 2011 15:37:25
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668159
Volat parent:: vnáší do kódu podobnou křehkost jako statické metody. Rodokmen třídy se může kdykoliv změnit a pak tě čeká přepisování na parent::parent:: atd.
Ale je to úplně jedno, protože řešit volání DB dědičností je nesmysl.
18. 8. 2011 15:39:46
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668158
hm
verified
rating uzivatele
(20 hodnocení)
18. 8. 2011 15:44:00
ja nevim, ja volani pres parent temer vubec nepouzivam a v podstate k tomu mam stejne duvody jako uvadi martin... ale hadat se o tom nebudu, nebudu se tu vydavat za uplneho odbornika, ale proste si me tim prekvapil, skoro by me to nenapadlo pouzivta tak jsem chtel vedet z jakeho duvodu bych vlastne mel...
18. 8. 2011 15:44:00
https://webtrh.cz/diskuse/volani-metody-z-jine-tridy#reply668157
Pro odpověď se přihlašte.
Přihlásit