Methodenname und Argumente dynamisch

GalaxyWarrior

Erfahrenes Mitglied
Hallo, ich hoffe das Thema gibt es noch nicht, aber ich wüsste auch nicht wie ich es suchen soll, hab bisher nichts gefunden.

Also, ich kann ja im PHP Methoden eines Objektes so abfragen / aufrufen:

PHP:
$object->methode(Argument1, Argument2, [...]);

Nun habe ich versucht den Methodenname und die Argumente dynamisch aus einer Datenbank abzufragen. Hatte das nun so:

PHP:
[...]
$dbquery = "SELECT * FROM `Tabelle` WHERE `ID` = '1';
$result = mysql_query($dbquery);
$daten = mysql_fetch_array($result);
$object->$daten['Methodenname']($daten['Argumente']);
[...]

Die Tabelle der sieht so aus:

Code:
ID | Methodenname | Argumente
 1 |    name      | Argument

Bei dieser Möglichkeit bekomme ich den Fehler

Code:
Parse error: parse error, unexpected T_STRING

Dieser wird ausgelöst durch den dynamischen Methodenname, denn wenn ich diesen Statisch setze bekomme ich einen anderen Fehler. Die Argumente in der Datenbank sind in der Form:

$A1, $A2 ...

da die Argumente Variablen sind die ich über Post und / oder URL übergeben habe. Nun sieht er diese Argumentenkette nicht als mehrere Argumente, sondern als einen großen String. Auch erkennt er nicht dass es sich um Variablen handelt die geparst werden müssen.

Ich hoffe man versteht was ich versuche zu erklären ^^
Hat einer ne Idee wie ich das lösen könnte?

Gruß GalaxyWarrior
 
Hi,

also ich würde an deiner Stelle dafür call_user_func_array() benutzen, dafür bräuchtest du nur noch die Parameter als array, das könntest du z.B. mit explode() machen.

PHP:
$dbquery = "SELECT * FROM `Tabelle` WHERE `ID` = '1'"; 
$result = mysql_query($dbquery); 
$daten = mysql_fetch_array($result);

$args = explode(',', $daten['Argumente']);

call_user_func_array(array(& $object, $daten['Methodenname']), $args);
 
Zuletzt bearbeitet:
Also im prinzip is call_user_func_array() ja garnicht schlecht, kannte ich noch garnicht, aber leider werden die Argumente aus der Datenbank nur als einfacher String angesehen. Es sind aber eigentlich Variablen. In der Tabelle 'Argumente' steht z.B. etwas wie:

$_GET[page],$_GET[art],$_POST[auth],$_POST[addkom],$_POST[add]

Nun ist das erste Argument nicht 'Index' wie geplant sondern $_GET[page].

Hast du da noch ne Idee für?
Gruß GalaxyWarrior
 
Zurück