Autor | Zpráva | ||
---|---|---|---|
sifik Profil |
#1 · Zasláno: 28. 5. 2012, 20:19:37
Chtěl bych se zeptat (asi spíše filozofická otázka), jak je to s používáním callback funkcí v php? Doporučuje ano nebo ne?
V JS mají díky asynchronnímu programování svůj význam, ale pokud vím, tak php "asynchronismus" nepodporuje. Mohl by mě někdo do tohoto problému zasvětit? Předem díky. |
||
Darker Profil |
#2 · Zasláno: 28. 5. 2012, 20:34:40
V PHP je jen málo příležitostí, kdy callback potřebuješ. Tam kde to nejde jinak je používání callbacku nutné, leč nepraktické. Zatím jsem na to narazil dvakrát, když jsem složitým algorytmem řadil pole.
|
||
sifik Profil |
#3 · Zasláno: 28. 5. 2012, 20:42:07
Mohl by jsi mi prosím objasnit, proč je to nepraktické?
Doporučuješ tedy nepoužívat callback fce, když to není třeba? ..Mně se totiž způsob callback fcí líbí a zdá se mi i docela použitelný, např, tento framework callback používá běžně. Viz routing. |
||
Darker Profil |
#4 · Zasláno: 28. 5. 2012, 21:25:19
sifik:
„Mohl by jsi mi prosím objasnit, proč je to nepraktické?“ Každou funkci musím definovat ručně v kódu. |
||
Tori Profil |
#5 · Zasláno: 28. 5. 2012, 21:36:13
sifik:
IMHO jde spíš o to, jestli ta konkrétní věc jde udělat i jinými prostředky a co z toho je v dané situaci vhodnější. Např. často jsem využila callback pro všechna nahrazování, kde byla potřeba i nějaká logika (typicky v šablonách). Anonymní funkce v PHP 5.3 a jejich ukládání do proměnných mi připadá i víc podobné javascriptu, než create_function v PHP 5.2 (to vypadá příliš podobně eval a nevíc IDE neumí obarvovat PHP uvnitř řetězce). Darker: „Každou funkci musím definovat ručně v kódu.“ Asi blbá otázka, ale ono to v případě uživatelem definovaných funkcí jde udělat i nějak jinak? |
||
Darker Profil |
#6 · Zasláno: 28. 5. 2012, 21:43:49
Tori:
„Asi blbá otázka“ Blbě jsem se vyjádřil. Měl jsem namysli nemožnost vytváření anonymních funkcí, a jak se zdá, mýlil jsem se. |
||
sifik Profil |
#7 · Zasláno: 28. 5. 2012, 21:51:39
Tori:
„Anonymní funkce v PHP 5.3 a jejich ukládání do proměnných mi připadá i víc podobné javascriptu“ To v každém případě. Právě z JS jsem si oblíbil styl zápisu: Callback::call('params', function($string){ return $string; }); Šlo mi hlavně o to, zda to má i své mouchy. (pravděpodobně ne, doufám :-)) „logika (typicky v šablonách)“ mohla by jsi poskytnou nějaký příklad? |
||
Tori Profil |
*
[page=21]titulek[/page] => <a href="url-z-databaze-podle-ID-21">titulek</a>
* [page=21/] => <a href="url-z-databaze">titulek podle aktuálně nastaveného jazyka, z DB</a>
* převod Příjmení, Jméno na J. Příjmení (bez zkracování predikátů či příjmení z více částí) * překlad datumů na text s ošetřením nulových částí ( 2012-05-03 => 3. května 2012, ale 2012-05-00 => květen 2012)
* doplňování kontextové nápovědy k bibliografii (např. "Název knihy (BB 2012)" => <i>Název knihy</i> (<span class="vysvětlivka" title="básnická sbírka">BB</span> 2012)
... atd., cokoliv, kde se nedá použít napevno definované nahrazení 1:1 a str/preg_replace |
||
Jan Tvrdík Profil |
#9 · Zasláno: 28. 5. 2012, 23:24:48
sifik:
„Chtěl bych se zeptat (asi spíše filozofická otázka), jak je to s používáním callback funkcí v php?“ Callbacky se v PHP používají zcela běžně, ale na rozdíl od JS netvoří v PHP základní stavební kámen. Od PHP 5.3 jsou navíc k dispozici anonymní funkce, které jsou dále vylepšeny v PHP 5.4 (automatické předávání $this ).
„Šlo mi hlavně o to, zda to má i své mouchy.“ Callbacky jako anonymní funkce představují velmi silnou zbraň ve spolupráci např. s funkcemi jako array_map, array_filter, array_reduce nebo array_walk. Nicméně takto napsaný kód je o něco pomalejší, takže v kritických částech aplikace je dobré se těmto funkcím vyhnout. |
||
sifik Profil |
#10 · Zasláno: 29. 5. 2012, 21:41:51
Super, díky moc za objasnění.
|
||
Časová prodleva: 11 let
|
0