call_user_func_array übergibt Array nicht richtig

rollerueckwaerts

Erfahrenes Mitglied
Hallo liebe tuttorials.de Gemeinde,
dieser Code hier funktioniert, nur wird der Array nicht komplett übergeben.

Code:
if ($result = @call_user_func_array(array($object,$request['method']),$request['params'])) {
print_r($request['params']);	
}

gibt aus :

Array
(
    [0] => email
    [1] => pass
    [2] => stats
    [3] => key
)

Soweit so gut, nun wird ja durch die call_User_func_array diese Methode aufgerufen:

Code:
public function writeSomething($something) {		
	return print_r($something);
}

gibt aus:

email

Der Array der hier als Array ankommen soll ist jetzt nur noch ein String der "email" enthält.


Was da schief gelaufen ? Was mach ich falsch ?


Lieben Dank schon jetzt !!
 
Ich nehme alles zurück! Du übergibst ein indiziertes Array! Ich muss da noch mal in mich gehen ;-)

Edit: Ich benutze die Funktion eigentlich nicht, daher kenne ich ihre Eigenarten nicht. Das Problem liegt aber daran, das call_user_func_array() die Methode zwar aufruft, aber die Parameter nicht tatsächlich als Array übergibt sondern einzeln. Das kann man anhand des Beispiels im Manual auch gut erkennen:

PHP:
<?php
// Aus dem Manual zu call_user_func_array
function foobar($arg, $arg2) {
    echo __FUNCTION__, " got $arg and $arg2\n";
}
class foo {
    function bar($arg, $arg2) {
        echo __METHOD__, " got $arg and $arg2\n";
    }
}


// Call the foobar() function with 2 arguments
call_user_func_array("foobar", array("one", "two"));

// Call the $foo->bar() method with 2 arguments
$foo = new foo;
call_user_func_array(array($foo, "bar"), array("three", "four"));
?>

Ist Reflection vllt. eine Option für dich? Du brauchst das anscheinend nur, um die Methode aus der Klasse variablen zu halten, oder?
 
Zuletzt bearbeitet:
Zurück