Autor | Zpráva | ||
---|---|---|---|
martindeveloper Profil |
#1 · Zasláno: 3. 6. 2009, 16:52:01 · Upravil/a: martindeveloper
Dobrý den.
Jde nějak zjistit v tělě funkce/metody jestli je předávaná jako parametr další funkci/metodě nebo je použita samostatně ? Potřeboval bych totiž ovlivnit chování jedné metody pokud bude předána jako parametr další. Nějaké návrhy ? Děkuji. |
||
tiso Profil |
#2 · Zasláno: 3. 6. 2009, 17:02:59
martindeveloper - a toto je na čo dobré? Čo vlastne chceš takto robiť?
|
||
fuckin Profil * |
#3 · Zasláno: 3. 6. 2009, 17:12:49
uved priklad... funkce a metoda je trochu rozdil..kdybys to predaval ve druhem parametru tak by to slo
|
||
martindeveloper Profil |
#4 · Zasláno: 3. 6. 2009, 17:29:31
Dejme to tomu že mám metody strong a p.
Zavolám třeba Text::strong("Ahoj"); a metoda provede echo "<strong>".$input."</strong>"; Jenže pokud bych chtěl udělat tohle Text::p(Text::strong("Ahoj, ") . "člověče"); Tak by to neudělalo požadovaný efekt. |
||
fajzen Profil |
#5 · Zasláno: 3. 6. 2009, 17:46:11
problém je v logike metód... nedávaj do metód
echo "<strong>".$input."</strong>"; return "<strong>".$input."</strong>"; echo Text::p(Text::strong("Ahoj, ") . "člověče"); |
||
fuckin Profil * |
#6 · Zasláno: 3. 6. 2009, 18:06:05
fajzen
V jake logice? To nema s metodama nic spolecne kdyz to vola jako statickou tridu... martindeveloper Vis jaky je rozdil mezi procedurou a funkci? Fce vraci hodnotu tedy samo o sobe pri zavolani neco vraci, kdyz se tam budes snazit narvat proceduru tak to udela kulove, to ti tak akorat vypise to echo co tam mas... |
||
martindeveloper Profil |
#7 · Zasláno: 3. 6. 2009, 18:07:40
fuckin
Chápu rozdíly právě proto se ptám jestli jde rozlišit typ volání. fajzen IMHO, já pravě chci eliminovat použití echo. |
||
fajzen Profil |
#8 · Zasláno: 3. 6. 2009, 18:23:51
fuckin
„Fce vraci hodnotu tedy samo o sobe pri zavolani neco vraci, kdyz se tam budes snazit narvat proceduru tak to udela kulove, to ti tak akorat vypise to echo co tam mas...“ presne toto som myslel tou "logikou", akurat som sa nevyjadril tak odborne... martindeveloper „IMHO, já pravě chci eliminovat použití echo.“ aj tak ho používaš, akurát že ti to prináša problémy... |
||
Alphard Profil |
#9 · Zasláno: 3. 6. 2009, 18:29:46
martindeveloper:
„IMHO, já pravě chci eliminovat použití echo.“ Proč? můžete použít print() :-) Co když budete později chtít upravený řetězec někam uložit? Jestli trváte na tom, aby si to třída sama vypsala, bude lepší udělat něco jako toString (který ale standardně také vrací a nevypisuje). Tím myslím oddělené zpracování a konečnou metodu, která výsledek jen vypíše. Maximálně bych dal nepovinný další parametr, který když bude true, tak se to vypíše. |
||
martindeveloper Profil |
#10 · Zasláno: 3. 6. 2009, 18:55:17 · Upravil/a: martindeveloper
Asi to tak bude nejlepší, udělat tam parametr který bude určovat jestli má být text vypsán či vrácen, ale je škoda že na to není nějaká funkce která by mi vrátila typ volání.
|
||
bohyn Profil |
#11 · Zasláno: 3. 6. 2009, 19:35:21
martindeveloper
„ale je škoda že na to není nějaká funkce která by mi vrátila typ volání.“ Zadna takova funkce ani byt nemuze protoze jde pokazde o stejne volani - zadne typy nema, je proste volana fce s urcitym poctem parametru a nejakou navratovou hodnotou. |
||
AM_ Profil |
#12 · Zasláno: 4. 6. 2009, 11:19:04
„IMHO, já pravě chci eliminovat použití echo.“
překlad do češtiny: "dle mého skromného názoru právě chci eliminovat použití echo". Dává to nějaký smysl? snad víš, jestli ho chceš eliminovat nebo ne :) „je škoda že na to není nějaká funkce která by mi vrátila typ volání.“ To je spíš štěstí, protože dobře napsanou funkci/proceduru právě nesmí zajímat, v jakém kontextu je volána, ale na základě předaných parametrů se zachovat vždy stejně. Můžeš to řešit třeba nepovinným parametrem, function toStrong($text, $toscreen=false), přičemž ji napíšeš tak, že při $toscreen=true bude vypisovat rovnou na obrazovku, při vynechání hodnotu vrátí. Podobně se chová pár vestavěných funkcí jako třeba print_r ;) |
||
Časová prodleva: 15 let
|
0