Zadejte hledaný výraz...

Dynamicke volani metody

kod je lepsi nez okecavani
public function __call($method, $param){
??
}
$class->metoda1($param1);
$class->metoda2($param1, $param2);
$class->metoda3($param1, $param2, $param3);
jak ted zajistit aby se napriklad pres call_user_func volala nejaka funkce. Predem upozornuji ze to nemohu predavat jako pole co je v $param ale musim to predavat jako kazdy parametr zvlast
zatim to mam vyreseno takto ale moc se me to nelibi
public function __call($method, $param){
if(in_array($method, $this->allowedFunction)){
switch(count($param)){
case 0 : return call_user_func($method, $this->name);
case 1 : return call_user_func($method, $this->name, $param);
case 2 : return call_user_func($method, $this->name, $param,$param);
case 3 : return call_user_func($method, $this->name, $param,$param, $param);
case 4 : return call_user_func($method, $this->name, $param,$param, $param, $param);
}
}
throw new Exception('Method ' . $method . ' not exist in PoFile class') ;
}
22. 1. 2009 12:37:00
https://webtrh.cz/diskuse/dynamicke-volani-metody/#reply215417
Mohl bys to trochu nahackovat pomocí eval() :). Něco vysyslím z hlavy:
foreach ($param as $k => $v) $paramArray[] = "$param";
eval ("call_user_func($method, " . implode(",", $paramArray) . ")");
Nemám ozkoušené :). Ale přes eval jdou kouzla, jen to chce trochu přemýšlet při tvorbě složitějších postupů... Doufám, že si rozumíme.
22. 1. 2009 13:07:16
https://webtrh.cz/diskuse/dynamicke-volani-metody/#reply215416
Napsal Pix;195509
Mohl bys to trochu nahackovat pomocí eval() :). Něco vysyslím z hlavy:
Nemám ozkoušené :). Ale přes eval jdou kouzla, jen to chce trochu přemýšlet při tvorbě složitějších postupů... Doufám, že si rozumíme.
jj rozumime bohuzel eval je plochej a nejde tam narvat objekt. kdyz ho narvu do eval tak se vola $o->toString();
jedine pres nejakou serializaci a v implementaci serializace je v php dost chyb
22. 1. 2009 13:34:00
https://webtrh.cz/diskuse/dynamicke-volani-metody/#reply215415
Znáš přece název objektu a můžeš ho do evalu vložit přímo jako "string".
22. 1. 2009 13:55:44
https://webtrh.cz/diskuse/dynamicke-volani-metody/#reply215414
megi
verified
rating uzivatele
(3 hodnocení)
22. 1. 2009 13:56:54
Do těla funkce dej něco jako:
return call_user_func_array(array($this, "method"), $param);
a do pole $param nasun ze zacatku $name a mas to.
22. 1. 2009 13:56:54
https://webtrh.cz/diskuse/dynamicke-volani-metody/#reply215413
Napsal megi;195544
Do těla funkce dej něco jako:
return call_user_func_array(array($this, "method"), $param);
a do pole $param nasun ze zacatku $name a mas to.
ale ja nepotrebuji predavat parametry jako pole ale tak jak prisli.
zavolam treba
$o->me(1,2,3,4,5);
do __call me pride v $param pole ale ja zase potrebuju zavolat
neco(1,2,3,4,5) a ne neco()
22. 1. 2009 14:52:54
https://webtrh.cz/diskuse/dynamicke-volani-metody/#reply215412
megi
verified
rating uzivatele
(3 hodnocení)
22. 1. 2009 14:56:07
Napsal Unregistered;195579
ale ja nepotrebuji predavat parametry jako pole ale tak jak prisli.
zavolam treba
$o->me(1,2,3,4,5);
do __call me pride v $param pole ale ja zase potrebuju zavolat
neco(1,2,3,4,5) a ne neco()
Jj, to jsem postrehl z tveho prvniho prispevku. To je to co dela ta funkce, kterou jsem napsal. :) Viz. manual PHP.
22. 1. 2009 14:56:07
https://webtrh.cz/diskuse/dynamicke-volani-metody/#reply215411
Napsal megi;195580
Jj, to jsem postrehl z tveho prvniho prispevku. To je to co dela ta funkce, kterou jsem napsal. :) Viz. manual PHP.
beru zpet, prehlidl sem to, ted to funguje uz dobre, dik
22. 1. 2009 15:04:08
https://webtrh.cz/diskuse/dynamicke-volani-metody/#reply215410
Pro odpověď se přihlašte.
Přihlásit