Nette 2.1 Callback, ako poslat array ako parameter?
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- duskohu
- Člen | 778
Caute neviem ako riesit situaciu mam anonimnu funkciu ktora dostava parameter pole. Tuto anonimnu funkciu volam niekde inde v aplikaci cez callback. Problem je v tom ze ked jej poslem pole, tak samozrejme posle len 1 prvok pola, resp. len jeho hodnotu, alebo ked pouzijem func_get_args(), tak mi vrati vsetky prvky pola, ale bez klucov. Neviete mi poradit ako na to?
$control->setCallback(function ($values) {
$values = func_get_args(); // tu dostanem uz len pole orezane od klucov
// process values
return $values;
});
class Foo{
private $callback;
public function setCallback($callback)
{
$this->callback = $callback;
}
private function process(){
$data = array(
'key1' => 'value1',
'key2' => 'value2',
);
$callbackData = Callback::invokeArgs($this->callback, $data);
}
}
- David Matějka
- Moderator | 6445
jak pise enumag, nebo
Callback::invokeArgs($this->callback, array($data));
invokeArgs pouziva fci call_user_func_array, kde je jako druhy parametr
ocekavano pole s jednotlivymi parametry pro callback. kdyz jsi tam poslal
$data
, tak to jednotlive prvky bralo jako jednotlive parametry pro
ten callback
Callback::invokeArgs($callback, array(1,2,3));
//je identicke jako
Callback::invoke($callback, 1, 2, 3);
Editoval matej21 (19. 12. 2013 2:36)