Funktion mit variabler Parameteranzahl aufrufen

onkelyves

Mitglied
Wie kann ich in PHP eine Funktion mit variabler Parameteranzahl dynamisch aufrufen?

Ich habe eine Klasse mit einer Methode, die eine beliebige Anzahl an Parametern empfängt. Jetzt möchte in dieser Methode eine weitere Methode aufrufen, die die variablen Parameter weitergibt. Geht das irgendwie?

PHP:
class MyClass {
   public function functionWithVariableParameters($parameter)
   {
     $args =  func_get_args();
     $object = new OtherObject();
     //Hier an otherFunction sollen jetzt die $args übergeben werden, aber wie?
     $object->otherFunction();
   }
}

Danke schonmal für Hilfe.
 
PHP:
class MyClass {
   public function functionWithVariableParameters($parameter)
   {
     $args =  func_get_args();
     $object = new OtherObject();
     //Hier an otherFunction sollen jetzt die $args übergeben werden, aber wie?
     $object->otherFunction($args);
   }
}

$args ist ein Array mit den Parametern, dass du ganz normal weitergeben kannst.
 
So war die Frage jetzt nicht gemeint. Ich wollte die variable Parameteranzahl genau so an die andere Funktion übergeben.
Also so:
PHP:
class MyClass {
   public function functionWithVariableParameters($parameter)
   {
     $args =  func_get_args();
     $object = new OtherObject();
     //Hier an otherFunction sollen jetzt die $args übergeben werden, aber wie?
     $object->otherFunction($args[0], $args[1], $args[2] ....);
   }
}

Habs jetzt aber selbst hinbekommen:
PHP:
class MyClass {
   public function functionWithVariableParameters($parameter)
   {
     $args =  func_get_args();
     $object = new OtherObject();
     //Hier an otherFunction sollen jetzt die $args übergeben werden, aber wie?
     call_user_func_array(array($object , 'otherFunction'), $args);
   }
}

Komisch fand ich allerdings, dass das hier einen PHP Error auslöst:
PHP:
class MyClass {
   public function functionWithVariableParameters($parameter)
   {
     $object = new OtherObject();
     //Hier an otherFunction sollen jetzt die $args übergeben werden, aber wie?
     call_user_func_array(array($object , 'otherFunction'), func_get_args());
   }
}
Eigentlich müsste ja func_get_args() einfach das Array zurückgeben und dann an call_user_func_array übergeben. Geht aber nicht. Naja egal, läuft ja jetzt. Vielleicht hilft's ja dem ein oder anderen.

Danke euch trotzdem!;)
 
Hi, kleiner Auszug aus der PHP Dokumentation bezüglich des Errors:

Note: Because this function depends on the current scope to determine parameter details, it cannot be used as a function parameter. If this value must be passed, the results should be assigned to a variable, and that variable should be passed.

Bin da selber auch schon ein paar mal drüber gestolpert, aber du hast es ja auch schon gelöst. ;)
 
Zurück