Heim > Backend-Entwicklung > PHP-Tutorial > Eine kurze Diskussion über die Funktionen call_user_func() und call_user_func_array() in PHP

Eine kurze Diskussion über die Funktionen call_user_func() und call_user_func_array() in PHP

little bottle
Freigeben: 2023-04-05 22:26:01
nach vorne
4150 Leute haben es durchsucht
Dieser Artikel enthält hauptsächlich eine kurze Erläuterung der Funktionen und Verwendung der Funktionen call_user_func() und call_user_func_array() in PHP. Interessierte Freunde können mehr darüber erfahren.

call_user_func: Rufen Sie einen Parameter als Callback-Funktion auf

Verwendungsbeschreibung:

call_user_func ( callable $callback [, mixed $parameter [, mixed $... ]] ) : mixed
Nach dem Login kopieren

Parameterbeschreibung:

Erster Parameter $callback dient als Rückruffunktion und andere Parameter sind Parameter der Rückruffunktion.

$parameter: Der an die Callback-$callback-Funktion übergebene Parameter. Beachten Sie, dass die Parameter hier nicht als Referenz übergeben werden können.

Die folgenden einfachen Beispiele veranschaulichen die Verwendung von call_user_func in verschiedenen Situationen:

//先引用,后执行
function _call($call){
    echo $call++.&#39;<br/>&#39;;
    echo $call++.&#39;<br/>&#39;;
    return $call;
}
$rs = call_user_func(&#39;_call&#39;,1);
var_dump($rs);

//结果
//1
//2
//int(3)
Nach dem Login kopieren

wird zuerst ausgeführt und dann referenziert

$arg = 1;
call_user_func(function ($call){
    echo ++$call.&#39;<br/>&#39;;
    echo ++$call.&#39;<br/>&#39;;
},$arg);

//结果为2,3
Nach dem Login kopieren

Die Callback-Funktion übergibt keinen Wert , und übergibt func_get_arg und func_get_args. Ruft Parameter ab.

$argOne = 1;
$argTwo = 2;
call_user_func(function (){
    //获取第几个参数
    $arg = func_get_arg(0);
    var_dump($arg);
    echo &#39;<br/>&#39;;
    //获取所有的参数,并以数组的形式返回
    $args = func_get_args();
    var_dump($args);
    //获取参数个数
    $argNum = func_num_args();
    echo "<br/>";
    var_dump($argNum);
},$argOne,$argTwo);

//结果为
int(1) 
array(2) { [0]=> int(1) [1]=> int(2) } 
int(2)
Nach dem Login kopieren

Aufrufen von Klassenmethoden:

Es gibt zwei Formen des Aufrufs statischer Methoden in einer Klasse, während der Aufruf öffentlicher Methoden nur möglich ist ein Array als erster Parameter

class Func{

    static public function _One(){
        $str = "THE CLASS NAME IS".__CLASS__." AND CLASS STATIC METHOD IS ".__METHOD__;
        $argNum = func_num_args();
        if($argNum){
            $arg = func_get_arg(0);
            return $str.&#39; and argument is &#39;.$arg;
        }else{
            return $str;
        }
    }


    public function _Two($num){
        return $num ? $num + 1 : $num;
    }

}

echo "<br/>";
//调用类的静态方法
var_dump(call_user_func(&#39;Func::_One&#39;,&#39;one&#39;));
echo &#39;<br/>&#39;;
var_dump(call_user_func([&#39;Func&#39;,&#39;_One&#39;]));

$num = 4;
$o = new Func;
//调用类普通方法
$return = call_user_func(array($o,&#39;_Two&#39;),$num);
echo &#39;<br/>&#39;;
var_dump($return);

结果:
string(79) "THE CLASS NAME ISFunc AND CLASS STATIC METHOD IS Func::_One and argument is one" 
string(59) "THE CLASS NAME ISFunc AND CLASS STATIC METHOD IS Func::_One" 
int(5)
Nach dem Login kopieren

Beim Aufrufen einer Klasse mit einem Namespace ist die Verwendung von call_user_func dieselbe wie oben

//调用静态方法
call_user_func(array(__NAMESPACE__.&#39;\StaticDemo&#39;,&#39;_One&#39;),100);
call_user_func(&#39;App\StaticDemo::_One&#39;,200);
//调用public方法
call_user_func(array($obj,&#39;_Two&#39;),2,3,4);  
Nach dem Login kopieren

Abschließend:
Ähnlich der Funktion call_user_func , es gibt call_user_func_array, die Funktion von call_user_func_array ist dieselbe wie die von call_user_func Die Funktion ist dieselbe,
Der Unterschied besteht darin, dass call_user_func eine Rückruffunktion zum Verarbeiten von Zeichen verwendet, während call_user_func_array eine Rückruffunktion zum Verarbeiten von Arrays verwendet, was bedeutet, dass die Der zweite Parameter von call_user_func_array kann nur ein Array sein.

Verwandte Tutorials: PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonEine kurze Diskussion über die Funktionen call_user_func() und call_user_func_array() in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:cnblogs.com
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage