Heim >Backend-Entwicklung >PHP-Tutorial >Callback-Funktion in PHP

Callback-Funktion in PHP

无忌哥哥
无忌哥哥Original
2018-06-28 14:49:158836Durchsuche

* 2. 2 Funktionen, die Rückrufe ausführen

* Tipp: Was ist ein Rückruf?

* Die vom PHP-System bereitgestellten Funktionen werden als direkte Aufrufe bezeichnet, auch genannt: direkt Aufrufe

* Wenn das PHP-System eine benutzerdefinierte Funktion aufruft, muss diese über eine Proxy-Funktion aufgerufen werden, die als indirekter Aufruf oder auch Rückruf bezeichnet wird

* Das ist, was wir tun habe heute etwas über call_user_func() und call_user_func_array() gelernt. Die Proxy-Funktion

* kann das System ersetzen, um unsere benutzerdefinierte Funktion aufzurufen

* 1.call_user_func_array($callback, $array): Array-Parameter verwenden um die Callback-Funktion auszuführen

* 2.call_user_func($callback, $array): Der erste Parameter wird als Callback-Funktionsaufruf verwendet

* Hinweis: 1. Normalerweise ist dies nicht erforderlich Schreiben Sie Parameter in den Rückruf, aber um sie über andere Funktionen zu erhalten. 2. Parameterübergabe per Referenz ist nicht zulässig

//1 Parameter werden einzeln übergeben mit: call_user_func()

//Einzelner Parameter

echo call_user_func(function(){
    //如果匿名回调没写参数,可以通过func_get_args()获取
    return '欢迎来到'.func_get_arg(0);
},'php中文网');
echo &#39;<hr>&#39;;
echo call_user_func(function($site){
    return &#39;欢迎来到&#39;.$site;
},&#39;php中文网&#39;);
echo &#39;<hr>&#39;;

//Mehrere Parameter, tatsächliche Parametermenge Die Anzahl der Parameter muss mit dem Rückruf übereinstimmen, und jeder Überschuss wird ignoriert

echo call_user_func(function($site,$course){
    return &#39;欢迎来到&#39;.$site.&#39;学习&#39;.$course.&#39;课程&#39;;
},&#39;php中文网&#39;,&#39;php&#39;);
echo &#39;<hr>&#39;;
//支持调用类中的方法做为回调
class Demo1
{
    //普通方法
    public function sum($a, $b)
    {
        return $a+$b;
    }
}
class Demo2
{
    //静态方法
    public static function multi($a,$b)
    {
        return $a*$b;
    }
}

//Eine normale Methode aufrufen : Der Rückruf muss als Array übergeben werden: [Objekt, 'Methodenname']

$obj = new Demo1;
echo call_user_func([$obj,&#39;sum&#39;],10,15);

//php5 .4+ und höher, kann abgekürzt werden:

echo call_user_func([(new Demo1()),&#39;sum&#39;],10,15);
echo &#39;<hr>&#39;;

//Call static Methode: Es gibt zwei Möglichkeiten: String und Array

//String: 'Klassenname::Methodenname'

echo call_user_func(&#39;Demo2::multi&#39;,10,15);

//Array: [Klassenname, 'Methodenname']

echo &#39;<hr>&#39;;
echo call_user_func([&#39;Demo2&#39;,&#39;multi&#39;],20,5);

//Wenn es einen Namespace gibt, fügen Sie einfach die Namespace-Zeichenfolge vor dem Klassennamen hinzu oder verwenden Sie eine Konstante_ _NAMESPACE__

//Verstehen Sie call_user_func(), dann ist call_user_func_array() nur sehr einfach Die Parameter sind unterschiedlich

* 2. call_user_func_array(callback, array)

* nur Akzeptiert zwei Parameter: Callback, Index-Array und die an den Callback übergebenen Parameter werden alle in das Index-Array gepackt

* Der einzige Unterschied zu call_user_func(array,arg1...) besteht darin, dass die Methode zur Übergabe von Parametern unterschiedlich ist

* Rückrufe unterstützen auch: String-Funktionsnamen, Klassennamen, Arrays, anonym Funktionen

echo &#39;<hr>&#39;;
echo call_user_func_array(function(){
    //查看传递给回调的参数
//    return print_r(func_get_args(),true);
    
    $msg = &#39;前端开发的基础知识包括:&#39;;
    //遍历参数数组
    foreach (func_get_args() as $value) {
        $msg .= $value.&#39;,&#39;;
    }
    //去掉未尾逗号,并替换成感叹号
    return rtrim($msg,&#39;,&#39;).&#39;!&#39;;
    
}, [&#39;html&#39;,&#39;css&#39;,&#39;javascript&#39;]);
echo &#39;<hr>&#39;;
class Demo3
{
    public function func1()
    {
        return __METHOD__.&#39;<pre class="brush:php;toolbar:false">&#39;.print_r(func_get_args(),true).&#39;
'; } } class Demo4 { public static function func2() { return __METHOD__.'
&#39;.print_r(func_get_args(),true).&#39;
'; } }

//Methoden in der Callback-Klasse

echo call_user_func_array([(new Demo3),&#39;func1&#39;], [&#39;php&#39;,&#39;java&#39;,&#39;c&#39;]);

//Callbacks zum Aufruf statischer Methoden:

//1. Verwenden Sie die Array-Parametermethode

echo call_user_func_array([&#39;Demo4&#39;,&#39;func2&#39;], [&#39;html&#39;,&#39;css&#39;,&#39;jQuery&#39;]);

//2. Verwenden Sie die String-Parameter-Methode

echo call_user_func_array(&#39;Demo4::func2&#39;, [&#39;html&#39;,&#39;css&#39;,&#39;jQuery&#39;]);

//Wenn es einen Namespace gibt, fügen Sie einfach den Namen vor dem Klassennamenspace oder __NAMESPACE__

hinzu

Das obige ist der detaillierte Inhalt vonCallback-Funktion in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
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