Autor | Zpráva | ||
---|---|---|---|
AM_ Profil |
#1 · Zasláno: 17. 6. 2009, 11:44:51
Zdravím,
udělal jsem si třídu pro zpracování událostí (podobně jako eventy např. v .NET), kterým mohu přidělovat callback funkce, které se ve chvíli spuštění události zavolají. Zatím to řeším tak, že callbacku předávám jeden parametr asociativní pole, takže volání vypadá nějak takto: public function Raise($params = array()){ foreach ($this->callbacks as $callback){ $callback($params); } } Elegantnější by ale bylo, kdyby callback mohl mít libovolný počet skutečných parametrů, nejen přes asociativní pole, takže kdyby měl např. 3 parametry, volal bych: $callback($params[0], $params[1], $params[2]); řešit to ale takhle - ručně to vypisovat - by bylo mnohem horší, než jak to mám ted, tak bych se chtěl zeptat, jestli neexistuje nějaká funkce/konstrukce, která by takto uměla funkci volat. Našel jsem funkci call_user_func(), která umí volat callback s libovolnými parametry, ale se můj problém stává rekurzivní - musel bych nějak předat proměnný počet parametrů této funkci :) potřeboval bych spíš něco, co mi pole rozhází do jednotlivých parametrů, se kterými zavolá funkci. Rád bych se také vyhnul věcem jako sestavení kódu do řetězce a následný eval(), protože to údajně dost snižuje výkon a obecně moc nejsem přítel této funkce kvůli bezpečnosti. |
||
TomášK Profil |
#2 · Zasláno: 17. 6. 2009, 13:03:40
|
||
Majkl578 Profil |
#3 · Zasláno: 17. 6. 2009, 13:06:27 · Upravil/a: Majkl578
nejsem si jisty, zda je to to co hledas. pokud neco ve smyslu flexibilniho poctu parametru (coz su myslim), tak existuji funkce func_get_args a func_num_args
pouzit se daji takto: function testArgs() { $numOfParams = func_num_args(); $params = func_get_args(); var_dump($params); } testArgs('a', 'b', 'c', 'd'); a volat ji muzes pres call_user_func_array function testArgs() { $numOfParams = func_num_args(); $params = func_get_args(); var_dump($params); } $data = array('a', 'b', 'c', 'd'); call_user_func_array('testArgs', $data); |
||
AM_ Profil |
#4 · Zasláno: 17. 6. 2009, 22:59:29
TomášK
díky, to jsem hledal. Majkl578 func_get_args a func_num_args jsem znal, ale právě jsem to potřeboval z druhé strany - ne číst ve funkci předem neznámý počet parametrů , ale předat jej předem neznámé callback funkci :) |
||
Časová prodleva: 15 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0