variable Methoden mit variablen Parametern

Samuel

Erfahrenes Mitglied
Guten Abend,
ich würde gerne index-Datei erstellen die mir aus ausgehend von der Adressleiste
eine gewisse Klasse einbindent und des weiteren gleich eine Methode aufruft und
dessen Parameter mitgibt.

Hier mein Ansatz:
PHP:
<?php

function __autoload($classname)
{
	if(is_file('libs/' . $classname . '.class.php'))
		require 'libs/' . $classname . '.class.php';
	else if(is_file('libs/' . $classname . '.inc'))
		require 'libs/' . $classname . '.inc';
	else
		require 'templates/error404.tpl';
}

$arrayIndex = array();
$acronym = array();
$parts = explode('&', $_SERVER['QUERY_STRING']);
foreach($parts as $value)
{
	list($arrayIndex, $acronym) = explode('=', $value);
	$parameters[$arrayIndex] = $acronym;
}

$obj = new $parameters['classname'];
$obj->$parameters['method'](array_slice($parameters, 2));

?>

Dies sollte nach aufruf von: index.php?classname=Klasse&Methode&Parameter1=foo&Parameter2=bar
folgendes bewerkstelligen:

PHP:
$obj = new Klasse;
$obj->Methode(array('Parameter1'=>'foo', 'Parameter2'=>'bar'));

Dies funktioniert auch einwandfrei. Nun würde ich das aber gerne so umschreiben das
es mir die Parameter nicht in einem Array sondern einzeln im jeweiligem Format an die Methode übergibt. Wie zB
PHP:
$obj->Methode('foo', 'bar');

Das ganze würd sich ja mit eval(); umgehen lassen, aber wie wir alle wissen eval() => evil

Vielen Dank im voraus für die eure Mithilfe.
Schöne Grüße
Samuel Weber
 
Mittels call_user_func_array kannst du das Ganze umsetzen:
PHP:
$obj = new Klasse;
// bei Klassen ein array übergeben mit dem Objekt und dem Methodennamen
// 2. Parameter-> Array der Argumente
call_user_func_array(array(&$obj, 'Methode'), array('arg1','arg2'));
 
Zurück