Heim > Backend-Entwicklung > PHP-Tutorial > Detaillierte Erläuterung der Anwendungsbeispiele der PHP-Funktionen call_user_func und call_user_func_array

Detaillierte Erläuterung der Anwendungsbeispiele der PHP-Funktionen call_user_func und call_user_func_array

伊谢尔伦
Freigeben: 2023-03-11 13:38:01
Original
2045 Leute haben es durchsucht

Als ich mir UCenter ansah, gab es eine Funktion call_user_func, die ich nicht herausfinden konnte, weil ich dachte, es sei eine von mir definierte Funktion, aber ich konnte sie nach der Suche nirgends finden Auf Baidu habe ich herausgefunden, dass call_user_func eine Eingebaute Funktion

Die Funktion call_user_func ähnelt einer speziellen Methode zum Aufrufen einer Funktion. Die Verwendungsmethode ist wie folgt:

function a($b,$c) 
{ 
echo $b; 
echo $c; 
} 
call_user_func('a', "111","222"); 
call_user_func('a', "333","444"); 
//显示 111 222 333 444
Nach dem Login kopieren

Es ist seltsam, eine Methode innerhalb einer Klasse aufzurufen. Ich weiß nicht, was die Entwickler darüber nachgedacht haben, was auch voller Neuheiten ist.

class a { 
function b($c) 
{ 
echo $c; 
} 
} 
call_user_func(array("a", "b"),"111"); 
//显示 111
Nach dem Login kopieren

Die Funktion call_user_func_array ist call_user_func sehr ähnlich, jedoch auf andere Weise. Die Parameter werden übergeben, um die Parameterstruktur klarer zu machen:

function a($b, $c) 
{ 
echo $b; 
echo $c; 
} 
call_user_func_array('a', array("111", "222")); 
//显示 111 222
Nach dem Login kopieren

Die Funktion call_user_func_array kann auch aufrufen Methoden innerhalb der Klasse.

Class ClassA 
{ 
function bc($b, $c) { 
$bc = $b + $c; 
echo $bc; 
} 
} 
call_user_func_array(array('ClassA','bc'), array("111", "222")); 
//显示 333
Nach dem Login kopieren

Sowohl die Funktion call_user_func als auch die Funktion call_user_func_array unterstützen , wodurch sie funktional konsistenter mit gewöhnlichen Funktionsaufrufen sind:

function a(&$b) 
{ 
$b++; 
} 
$c = 0; 
call_user_func('a', &$c); 
echo $c;//显示 1 
call_user_func_array('a', array(&$c)); 
echo $c;//显示 2
Nach dem Login kopieren
Einfache Verwendung von call_user_func_array in PHP


<?php 
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")); 
?>
Nach dem Login kopieren
Ausgabe der obigen Routine Ähnlich wie:

foobar bekam eins und zwei
foo::bar bekam drei und vier
Beispiel #2 call_user_func_array() unter Verwendung des Namespace-Namens

<?php 
namespace Foobar; 
class Foo { 
static
 public function test($name) { 
print "Hello {$name}!\n"; 
} 
} 
// As of PHP 5.3.0 
call_user_func_array(NAMESPACE .&#39;\Foo::test&#39;, array(&#39;Hannes&#39;)); 
// As of PHP 5.3.0 
call_user_func_array(array(NAMESPACE .&#39;\Foo&#39;, &#39;test&#39;), array(&#39;Philip&#39;)); 
?>
Nach dem Login kopieren
Die Ausgabe der obigen Routine ist ähnlich wie:

Hallo Hannes!
Hallo Philip!
Beispiel #3 Verwendung der Lambda-Funktion

<?php 
$func = function($arg1, $arg2) { 
return $arg1 * $arg2; 
}; 
var_dump(call_user_func_array($func, array(2, 4))); /* As of PHP 5.3.0 */ 
?>
Nach dem Login kopieren
Die obige Routine gibt Folgendes aus:

int(8)


Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung der Anwendungsbeispiele der PHP-Funktionen call_user_func und call_user_func_array. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage