Die übergabe eines Parameters an eine aufrufbare Funktion
Ich kann nicht scheinen, um diese zu arbeiten. Ich habe eine Funktion, die einen parameter nimmt, die ich nennen möchte.
protected function testFunc($param) {
echo $param;
}
protected function testCall(callable $testFunc) {
call_user_func($testFunc);
}
public function testProg($param) {
$this->testCall([$this, 'testFunc']);
}
Habe ich versucht
$this->testCall([[$this, 'testFunc'], $param]);
und
$this->testCall([$this, 'testFunc($param)']);
und
$this->testCall('TestClass::testFunc($param));
Verschlüsse sind meine einzige Möglichkeit, hier oder wie kann ich ein parameter übergeben werden, um eine aufrufbare Funktion
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aufrufen einer Methode (in deinem Beispiel
function
(s) sind Klasse Methoden), müssen Sie diese syntax verwenden:Übergeben ein argument haben, müssen Sie diese syntax verwenden:
Übergeben mehr als zwei Argumente, die Sie haben zu verwenden
call_user_func_array
:Edit:
Den oben genannten code funktioniert gut, aber — wie quick-wittedly angemerkt in den Kommentaren — das Vorherige code:
funktioniert nicht in den obigen Zusammenhang.
Zu benutzen, die oben genannten Methoden und der Aufruf muss geändert werden in:
$this->testCall()
anders ist, dasscall_user_func( array($instance, 'funcname') )
. Bitte beachten Sie auch, dass Methoden sind geschützt, so dass es nicht möglich ist, nennen Sie es außerhalb der Klasse.Ändern Sie Ihren code wie folgt
So, erste Funktion (
testCall
) ist das akzeptieren von Argumenten für die zweite Funktion (testFunc
).Dieser code funktioniert nur, wenn Sie übergeben ein einziges argument. Wenn Sie möchten, übergeben Sie ein array verwenden
call_user_func_array
Wenn Sie wissen, die Anzahl der Argumente - pass ' em zu
call_user_func
:Wenn Sie nicht wissen, die Anzahl der Argumente - pass ' em zu
call_user_func_array
:In einem statischen Kontext, das Programm wäre:
Quelle