| | |
| Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
Autor | Správa |
---|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Mam taky problem s funkciou call_user_func(), konkretne s parametrami, ktore sa maju predat volanej funkcii a to ten, ze mi nejde odovzdat volanej funkcii viac ako jeden parameter nasledujucim sposobom:
Ide vlastne o to, ze z urcitych dovodov potrebujem volat rozne funkcie s roznym poctom parametrov pomocou jednej funkcie, cize napr:
Kód: <?php //vykona funkciu, ktorej meno je predane ako 1.parameter, ostatne parametre su parametre volanej funkcie function spustiFunkciu($menoFunkcie) { $args = zistiArgumenty(); //obsahuje retazec param1,param2,... call_user_func($menoFunkcie,$args); }
function nasobenie($param1,$param2) { echo $param1*$param2; }
function sucet($param1,$param2,$param3) { echo $param1+$param2+$param3; }
spustiFunkciu("nasobenie",2,5); //vystup by mal byt 10 ($args = "2,5") spustiFunkciu("sucet",1,2,3); //vystup by mal byt 6 ($args = "1,2,3") ?> Problem vsak je v tom, ze $args berie ako jeden parameter volanej funkcie a nie ako dva (tri) argumenty, ako by som to v skutocnosti potreboval... Normalne by sa to volalo cez Kód: call_user_func("nasobenie",2,5);
ale ja tu hodnotu "2,5" potrebujem ulozit do premennej a az tak predat funkcii call_user_func, pricom chcem, aby to zobrala ako 2 parametre...
Da sa to nejako efektivne vyriesit? Dik
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 08.06.08 Prihlásený: 09.07.08 Príspevky: 39 Témy: 1 | Napísal k3tch: 10.06.2008 0:50 | |
|
tak si sprav vlastnu funkciu co to bude riesit. napr.
Kód: function user_functions($name, $args) { $func = $name . '(' . $args . ');'; return eval($func); } potom ked definujes vlastnu funkciu napr sucin: Kód: function sucin($a, $b) { echo $a * $b; } a budes ju chciet zavolat tak jej argumenty predas takto Kód: user_functions('sucin', '2,3');
cize v prvom predas meno funkcie a v dalsom predas argumenty danej funkcie ako jeden string
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava | Napísal autor témy stenley: 10.06.2008 9:57 | |
|
jasne, tomu chapem, len problem je v tom, ze ked to mam v triede, tak volana metoda nic nevrati, neviem, mozno som tam mal niekde chybu, ale uz som to vyriesil inak... Vdaka za pomoc
Naposledy upravil stenley dňa 10.06.2008 12:22, celkovo upravené 1
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
preco by to nefungovalo ? pokial ti to nefunguje len v triede, tak logicky robis problem tam, ale v tom co si sem hodil ziadne prvky oop akosi nevidim
_________________ C#, PHP, ... |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava | Napísal autor témy stenley: 10.06.2008 11:08 | |
|
samozrejme, ze tam nevidis ziadne prvky oop, lebo som to tu dal zjednodusene, aby sa skor pochopilo, co potrebujem
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
tak ono zalezi na tom, ako mas urobenu triedu a to ze si to dal sem zjednodusene aspon mne osobne o tom vela nepovie. ako urcite vies, tak chybicka moze byt napriklad v dvojbodke miesto bodkociarky a nic ti nepojde...
aspon podla mna je v tomto pripade proste nutnost dat sem originalny zdrojak a nie zjednodusene verzie chces myslim pomoct v oop, nie v zakladnom funkcionalnom programovani
_________________ C#, PHP, ... |
|
Registrovaný: 08.06.08 Prihlásený: 09.07.08 Príspevky: 39 Témy: 1 | Napísal k3tch: 10.06.2008 11:25 | |
|
stenley: ked ti to islo normalne a nie v OOP tak chyba bola asi medzi stolickou a klavesnicou ale nie. ked uz si to teda nejak poriesil mohol by si sem dat aj riesenie keby to potreboval niekedy niekto dalsi
_________________ XMPP(Jabber): k3tch@xmpp.sk
No money? No Credit? Eat shit! |
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
tak tak, ako mod by si to mal vediet
_________________ C#, PHP, ... |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava | Napísal autor témy stenley: 10.06.2008 11:35 | |
|
radsej nespamujte ale nie, ved som priznal, ze tam mozem mat niekde chybu a ked mi to nejde, tak tam zjavne aj nejaka bude...
tu je teda ten zdrojak (jadro principu):
Kód: class Test { public function getContent($methodName) { if(method_exists($this,$methodName)) { $args = $this->getMethodArgs(func_get_args()); $ret = eval('$this->'.$methodName.'('.$args.');'); if(!empty($ret)) { return $ret; } } return false; } private function vypis($param1,$param2) { return $param1.",".$param2; } private function getMethodArgs($args) { unset($args[0]); return implode(",",$args); } }
$a = new Test; echo $a->getContent('vypis',5,10);
Ked tam najdete chybu, kvoli comu to nejde, budem vam vdacny
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
toto je cela trieda alebo mas este nieco ine ? odkial beries premennu $this ? atd...
_________________ C#, PHP, ... |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava | Napísal autor témy stenley: 10.06.2008 12:11 | |
|
je to cely zdrojak, ale tiez zjednoduseny ale princip zostal ten isty, cize ked to nejde v tomto, nepojde to ani v povodnom... $this je specialna premenna, ktora "odkazuje" na dany objekt (vytvara sa automaticky)
//LOL uz som na to dosiel
chyba bola v tomto riadku:
Kód: $ret = eval('$this->'.$methodName.'('.$args.');'); Namiesto toho malo byt: Kód: eval('$ret = $this->'.$methodName.'('.$args.');');
Naposledy upravil stenley dňa 10.06.2008 12:32, celkovo upravené 1
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 08.06.08 Prihlásený: 09.07.08 Príspevky: 39 Témy: 1 | Napísal k3tch: 10.06.2008 12:32 | |
|
stenley: tak nakoniec mozno asi nebola chyba u teba pretoze ked dam v methode vypis namiesto return echo tak to zoberie a vypise na obrazovku. bohuzial to len vypise a nic ine sa s tym robit neda. return to akosi nechce zozrat
_________________ XMPP(Jabber): k3tch@xmpp.sk
No money? No Credit? Eat shit! |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava | Napísal autor témy stenley: 10.06.2008 12:33 | |
|
uz som to vyriesil, vid vyssie
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
Registrovaný: 08.06.08 Prihlásený: 09.07.08 Príspevky: 39 Témy: 1 | Napísal k3tch: 10.06.2008 12:35 | |
|
no dava to celkom zmysel podla toho co si pisal a toho co som pisal ja
_________________ XMPP(Jabber): k3tch@xmpp.sk
No money? No Credit? Eat shit! |
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava | Napísal autor témy stenley: 10.06.2008 12:38 | |
|
jj, vdaka za pomoc, tiez som dal nakoniec echo namiesto return a pekne to vypisalo, cize automaticky bol problem v riadku s eval... a potom ma to uz tuklo
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
| Stránka: 1 z 1
| [ Príspevkov: 15 ] | |
Podobné témy | Témy | Odpovede | Zobrazenia | Posledný príspevok |
---|
| kupa tabletu rozdiel medzi parametrami v Mobilné zariadenia | 3 | 273 | 16.06.2014 15:28 Smith Wesson | | mozem pouzit nabijacku s inymi parametrami? v Elektronika | 5 | 3150 | 25.05.2013 18:52 liqua1 | | Kúpa nového nb - pomoc s parametrami v Notebooky a netbooky | 2 | 458 | 28.05.2019 12:36 pepkopav | | smartfón so sci-fi parametrami príde z Fínska v Novinky | 2 | 530 | 10.09.2016 18:01 shiro | | Praca s viacerymi zalozkami v Sieťové a internetové programy | 2 | 369 | 28.12.2016 13:16 maRT | | c++ nahradenie znaku viacerými znakmi v Assembler, C, C++, Pascal, Java | 11 | 513 | 14.11.2014 8:34 BX | | Wifi Problem s viacerymi pripojenymi zariadeniami v Siete | 1 | 249 | 21.11.2014 7:31 Mego | | Ako prepojiť databázu s viacerými zdrojmi? v Databázy | 17 | 1048 | 14.01.2010 12:27 Googler1 | | Nový čip pre systémy s viacerými GPU v Novinky | 4 | 1217 | 23.12.2008 0:56 Triminka | | DLNA a video s viacerymi audio stopami v Siete | 0 | 616 | 21.11.2011 18:49 Daevid | | K dispozícii beta Chrome 13 s viacerými novinkami v Novinky | 13 | 633 | 21.06.2011 16:54 mirom | | RAID 1 na 1particii disku s viacerymi particiami v Pevné disky a radiče | 11 | 359 | 30.01.2014 1:47 harm22 | | Linux 2.6.23 s viacerými veľkými zmenami v Novinky | 1 | 389 | 12.10.2007 8:47 JanoF | | funkcie v Assembler, C, C++, Pascal, Java | 5 | 869 | 15.11.2007 9:57 sento | | Excel - funkcie v Ostatné programy | 0 | 424 | 24.02.2016 10:06 mio | | Ajaxove funkcie v JavaScript, VBScript, Ajax | 13 | 811 | 11.05.2009 23:01 feko.yxo |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|