suchen
HeimBackend-EntwicklungPHP-TutorialCallback-Funktion in PHP
Callback-Funktion in PHPJun 28, 2018 pm 02:49 PM

* 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__.'
'.print_r(func_get_args(),true).'
';     } }

//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
php函数返回值可以有几个php函数返回值可以有几个Apr 26, 2022 pm 08:14 PM

php函数返回值只能有一个。在PHP中,函数返回值使用return语句定义,语法“return 返回值;”。return语句只能返回一个参数,即函数只能有一个返回值;如果要返回多个值的话,就需在函数中定义一个数组,将返回值存储在数组中返回。

php传参都是字符串吗php传参都是字符串吗Dec 15, 2022 pm 03:07 PM

不是,php传参可以是字符串、数字、布尔值、数组等。从PHP5.6版本开始支持传递数组参数,函数的形式参数可使用“…”来表示函数可接受一个可变数量的参数,而可变参数将会被当作一个数组传递给函数,语法“function 函数名(...$arr){//执行代码}”。

详细介绍PHP函数和方法的区别详细介绍PHP函数和方法的区别Mar 24, 2023 am 09:45 AM

随着互联网技术的发展,PHP已经成为了非常流行的开发语言之一。身为一个PHP开发者,了解PHP函数和方法的区别是非常重要的,因为它们在编写代码的时候都是必不可少的。在本文中,我们将详细介绍PHP函数和方法的区别。

php函数的参数赋值有哪几种php函数的参数赋值有哪几种Apr 24, 2022 pm 12:10 PM

php函数的参数赋值有3种:1、值传递赋值,将实参的值复制一份再赋值给函数的形参;2、引用传递赋值,把实参的内存地址复制一份,然后传递给函数的形参,进而将实参值赋值给形参;3、直接给函数的参数指定默认值,语法“函数名(参数变量='值')”。

PHP函数的命名规范及规则PHP函数的命名规范及规则May 19, 2023 am 08:14 AM

PHP作为一种非常流行的脚本语言,有着强大的函数库支持,其函数的命名规范和规则对于开发效率和代码可读性都有着重要的影响。本文将介绍PHP函数的命名规范及规则。一、命名风格在PHP中,函数名需要严格符合命名规范和规则,规范主要包括两个方面:命名风格和命名规则。1.下划线命名法下划线命名法是PHP函数命名最常用的方式,也是官方推荐的一种方式。遵循这种方式的函数名

PHP函数的迭代器函数PHP函数的迭代器函数May 19, 2023 am 08:11 AM

随着现代编程语言的不断发展,编程的效率和功能性也不断提高,其中PHP作为一种广泛使用的服务器端脚本语言,也在不断地更新和完善其自身的功能列表。PHP函数的迭代器函数就是其中的一种新功能,为PHP程序员提供了更加灵活和高效的编程方式。在本文中,我们将详细介绍PHP函数的迭代器函数的相关知识。什么是PHP函数的迭代器函数?在介绍PHP函数的迭代器函数之前,我们首

PHP函数的MSSQL函数PHP函数的MSSQL函数May 18, 2023 pm 11:31 PM

PHP是一种开源的服务器端脚本语言,通常用于开发Web应用程序。PHP具有易学易用、灵活、性能优异等优点,因此在Web开发领域得到了广泛应用。而MSSQL作为一种流行的关系型数据库管理系统,也被PHP所支持。在PHP中实现MSSQL数据库操作,需要使用MSSQL函数。MSSQL函数可用于连接数据库、执行查询语句、读写数据库中的数据等操作。接下来,将详细介绍一

php中递归函数是啥意思php中递归函数是啥意思May 31, 2022 pm 12:01 PM

在php中,递归函数指的是自调用函数,也就是函数在函数体内部直接或间接地自己调用自己;使用递归函数时,需要在函数体中附加一个判断条件,以判断是否需要继续执行递归调用,当条件满足时会终止函数的递归调用。

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

Leistungsstarke integrierte PHP-Entwicklungsumgebung

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools