[ Príspevkov: 15 ] 
AutorSpráva
Offline

Správca fóra
Správca fóra
call_user_func() s viacerymi parametrami funkcie

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32

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


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 08.06.08
Prihlásený: 09.07.08
Príspevky: 39
Témy: 1 | 1

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


Offline

Správca fóra
Správca fóra
call_user_func() s viacerymi parametrami funkcie

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
Napísal autor témyOffline : 10.06.2008 9:57 | call_user_func() s viacerymi parametrami funkcie

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

_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Skúsený užívateľ
Skúsený užívateľ
call_user_func() s viacerymi parametrami funkcie

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14691
Témy: 66 | 66
Bydlisko: Žilina
Vek: 30

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, ...
Offline

Správca fóra
Správca fóra
call_user_func() s viacerymi parametrami funkcie

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
Napísal autor témyOffline : 10.06.2008 11:08 | call_user_func() s viacerymi parametrami funkcie

samozrejme, ze tam nevidis ziadne prvky oop, lebo som to tu dal zjednodusene, aby sa skor pochopilo, co potrebujem :)


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Skúsený užívateľ
Skúsený užívateľ
call_user_func() s viacerymi parametrami funkcie

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14691
Témy: 66 | 66
Bydlisko: Žilina
Vek: 30

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, ...
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 08.06.08
Prihlásený: 09.07.08
Príspevky: 39
Témy: 1 | 1

stenley: ked ti to islo normalne a nie v OOP tak chyba bola asi medzi stolickou a klavesnicou :P 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!
Offline

Skúsený užívateľ
Skúsený užívateľ
call_user_func() s viacerymi parametrami funkcie

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14691
Témy: 66 | 66
Bydlisko: Žilina
Vek: 30

tak tak, ako mod by si to mal vediet :P :lol:


_________________
C#, PHP, ...
Offline

Správca fóra
Správca fóra
call_user_func() s viacerymi parametrami funkcie

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
Napísal autor témyOffline : 10.06.2008 11:35 | call_user_func() s viacerymi parametrami funkcie

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 :)


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Skúsený užívateľ
Skúsený užívateľ
call_user_func() s viacerymi parametrami funkcie

Registrovaný: 24.01.08
Prihlásený: 13.09.17
Príspevky: 14691
Témy: 66 | 66
Bydlisko: Žilina
Vek: 30

toto je cela trieda alebo mas este nieco ine ? odkial beries premennu $this ? atd...


_________________
C#, PHP, ...
Offline

Správca fóra
Správca fóra
call_user_func() s viacerymi parametrami funkcie

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
Napísal autor témyOffline : 10.06.2008 12:11 | call_user_func() s viacerymi parametrami funkcie

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 :D

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

_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 08.06.08
Prihlásený: 09.07.08
Príspevky: 39
Témy: 1 | 1

stenley: tak nakoniec mozno asi nebola chyba u teba :P 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!
Offline

Správca fóra
Správca fóra
call_user_func() s viacerymi parametrami funkcie

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
Napísal autor témyOffline : 10.06.2008 12:33 | call_user_func() s viacerymi parametrami funkcie

uz som to vyriesil, vid vyssie :)


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
Offline

Užívateľ
Užívateľ
Obrázok užívateľa

Registrovaný: 08.06.08
Prihlásený: 09.07.08
Príspevky: 39
Témy: 1 | 1

no dava to celkom zmysel :P podla toho co si pisal a toho co som pisal ja :D


_________________
XMPP(Jabber): k3tch@xmpp.sk
No money? No Credit? Eat shit!
Offline

Správca fóra
Správca fóra
call_user_func() s viacerymi parametrami funkcie

Registrovaný: 27.07.07
Príspevky: 3971
Témy: 51 | 51
Bydlisko: Bratislava
Vek: 32
Napísal autor témyOffline : 10.06.2008 12:38 | call_user_func() s viacerymi parametrami funkcie

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 :wall:


_________________
Desktop: CPU: AMD Athlon64 3000+ | MB: Biostar K8T890-A9 | VGA: NVIDIA GeForce 6200 LE 256MB | RAM: 2x 1GB A-DATA DDR 400 MHz Dual Kit | HDD: WD Caviar Blue 320GB | DVD: LG GSA-H10N | Keyboard: Chicony KU-0420 Silver/Black | Mouse: Logitech RX1000 | Zdroj: Corsair CX400 400W | CASE: DELUX DLC-MD370 Black | LCD: 20" Samsung 206BW | Repro: Teac XL-20
Notebook: ACER Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB / Intel HD Graphics | RAM: 4GB DDR3 1066 MHz | HDD: 640GB
 [ Príspevkov: 15 ] 


call_user_func() s viacerymi parametrami funkcie



Podobné témy

 Témy  Odpovede  Zobrazenia  Posledný príspevok 
V tomto fóre nie sú ďalšie neprečítané témy.

kupa tabletu rozdiel medzi parametrami

v Mobilné zariadenia

3

110

16.06.2014 15:28

Smith Wesson

V tomto fóre nie sú ďalšie neprečítané témy.

mozem pouzit nabijacku s inymi parametrami?

v Elektronika

5

2384

25.05.2013 18:52

liqua1

V tomto fóre nie sú ďalšie neprečítané témy.

smartfón so sci-fi parametrami príde z Fínska

v Novinky

2

249

10.09.2016 18:01

shiro

V tomto fóre nie sú ďalšie neprečítané témy.

Praca s viacerymi zalozkami

v Sieťové a internetové programy

2

132

28.12.2016 13:16

maRT

V tomto fóre nie sú ďalšie neprečítané témy.

c++ nahradenie znaku viacerými znakmi

v Assembler, C, C++, Pascal, Java

11

265

14.11.2014 8:34

BX

V tomto fóre nie sú ďalšie neprečítané témy.

Wifi Problem s viacerymi pripojenymi zariadeniami

v Siete

1

75

21.11.2014 7:31

Mego

V tomto fóre nie sú ďalšie neprečítané témy.

Ako prepojiť databázu s viacerými zdrojmi?

v Databázy

17

647

14.01.2010 12:27

Googler1

V tomto fóre nie sú ďalšie neprečítané témy.

Nový čip pre systémy s viacerými GPU

v Novinky

4

595

23.12.2008 0:56

Triminka

V tomto fóre nie sú ďalšie neprečítané témy.

DLNA a video s viacerymi audio stopami

v Siete

0

385

21.11.2011 18:49

Daevid

V tomto fóre nie sú ďalšie neprečítané témy.

K dispozícii beta Chrome 13 s viacerými novinkami

v Novinky

13

431

21.06.2011 16:54

mirom

V tomto fóre nie sú ďalšie neprečítané témy.

RAID 1 na 1particii disku s viacerymi particiami

v Pevné disky a radiče

11

161

30.01.2014 1:47

harm22

V tomto fóre nie sú ďalšie neprečítané témy.

Linux 2.6.23 s viacerými veľkými zmenami

v Novinky

1

220

12.10.2007 8:47

JanoF

V tomto fóre nie sú ďalšie neprečítané témy.

funkcie

v Assembler, C, C++, Pascal, Java

5

638

15.11.2007 9:57

sento

V tomto fóre nie sú ďalšie neprečítané témy.

API funkcie

v Assembler, C, C++, Pascal, Java

21

1575

12.09.2008 23:05

stopa27

V tomto fóre nie sú ďalšie neprečítané témy.

Excel - funkcie

v Ostatné programy

0

163

24.02.2016 10:06

mio

V tomto fóre nie sú ďalšie neprečítané témy.

Ajaxove funkcie

v JavaScript, VBScript, Ajax

13

556

11.05.2009 23:01

feko.yxo



© 2005 - 2017 PCforum, edited by JanoF