Callback-Funktion in PHP

无忌哥哥
Freigeben: 2023-04-01 21:02:02
Original
8733 Leute haben es durchsucht

* 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;;
Nach dem Login kopieren

//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;
    }
}
Nach dem Login kopieren

//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);
Nach dem Login kopieren

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

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

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

//String: 'Klassenname::Methodenname'

echo call_user_func(&#39;Demo2::multi&#39;,10,15);
Nach dem Login kopieren

//Array: [Klassenname, 'Methodenname']

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

//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;
'; } }
Nach dem Login kopieren

//Methoden in der Callback-Klasse

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

//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;]);
Nach dem Login kopieren

//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;]);
Nach dem Login kopieren

//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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!