Autor Zpráva
martindeveloper
Profil
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
martindeveloper - a toto je na čo dobré? Čo vlastne chceš takto robiť?
fuckin
Profil *
uved priklad... funkce a metoda je trochu rozdil..kdybys to predaval ve druhem parametru tak by to slo
martindeveloper
Profil
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
problém je v logike metód... nedávaj do metód
echo "<strong>".$input."</strong>";
ale
return "<strong>".$input."</strong>";
... to volanie, čo ti robí problémy potom bude
echo Text::p(Text::strong("Ahoj, ") . "člověče"); 
fuckin
Profil *
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
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
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
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
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
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
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 ;)

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: