php中的回调函数

Jun 28, 2018 pm 02:49 PM

 * 二、2个执行回调的函数

 * 提示:什么是回调?

 * 我们调用php系统提供的函数叫直接调用,也叫: 直调

 * php系统调用用户自定义的函数,必须要通过一个代理函数来调用,叫间接调用,也叫回调

 * 我们今天学习的call_user_func()和call_user_func_array()就是这样的代理函数

 * 可以代替系统来调用我们自定义的函数

 * 1.call_user_func_array($callback, $array):使用数组参数执行回调函数

 * 2.call_user_func($callback, $array):第一个参数作为回调函数调用

 * 注意: 1.回调中通常不需要写参数,而是通过其它函数来获取;2.参数不允许使用引用传递

//1.参数逐个传入使用:call_user_func()

//单个参数

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;;
Salin selepas log masuk

//多个参数,实参数量与回调参数数量必须一致,多余会被忽略

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;
    }
}
Salin selepas log masuk

//调用普通方法:回调必须以数组方式传入: [对象,'方法名']

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

//php5.4+以上,可以简写:

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

//调用静态方法:有字符串和数组二种方式

//字符串: '类名::方法名'

echo call_user_func(&#39;Demo2::multi&#39;,10,15);
Salin selepas log masuk

//数组: [类名,'方法名']

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

//如果有命名空间,只要在类名前加上命名空间字符串就可以了,或者用常量__NAMESPACE__

//理解了call_user_func()那么call_user_func_array()就非常简单了,仅仅是参数不同

* 2.call_user_func_array(callback, array)

* 只接受二个参数:回调,索引数组,传给回调的参数全部打包到索引数组中

* 与call_user_func(array,arg1...)不同之处仅仅传递参数方式不同

* 回调同样支持:字符串函数名,类名,数组,匿名函数

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;
'; } }
Salin selepas log masuk

//回调类中的方法

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

//调用静态方法的回调:

//1.使用数组参数方式

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

//2.使用字符串参数方式

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

//如果有命名空间,只需要在类名前加上命名空间或__NAMESPACE__即可

Atas ialah kandungan terperinci php中的回调函数. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Bagaimana untuk menulis fungsi panggil balik java Bagaimana untuk menulis fungsi panggil balik java Jan 09, 2024 pm 02:24 PM

Kaedah menulis fungsi panggil balik java ialah: 1. Panggilan balik antara muka, tentukan antara muka, yang mengandungi kaedah panggil balik, gunakan antara muka sebagai parameter di mana panggilan balik perlu dicetuskan, dan panggil kaedah panggil balik pada masa yang sesuai 2. Panggilan balik kelas dalam tanpa nama , anda boleh menggunakan kelas dalam tanpa nama untuk melaksanakan fungsi panggil balik untuk mengelakkan daripada membuat kelas pelaksanaan tambahan 3. Panggilan balik ungkapan Lambda Dalam Java 8 dan ke atas, anda boleh menggunakan ungkapan Lambda untuk memudahkan penulisan fungsi panggil balik.

Bagaimana untuk mengoptimumkan kesan pemuatan malas imej melalui fungsi php? Bagaimana untuk mengoptimumkan kesan pemuatan malas imej melalui fungsi php? Oct 05, 2023 pm 12:13 PM

Bagaimana untuk mengoptimumkan kesan pemuatan malas imej melalui fungsi PHP? Dengan perkembangan Internet, bilangan imej dalam halaman web semakin meningkat, yang memberi tekanan pada kelajuan memuatkan halaman. Untuk meningkatkan pengalaman pengguna dan mengurangkan masa pemuatan, kami boleh menggunakan teknologi pemuatan malas imej. Memuatkan imej yang malas boleh melambatkan pemuatan imej hanya dimuatkan apabila pengguna menatal ke kawasan yang boleh dilihat, yang boleh mengurangkan masa memuatkan halaman dan meningkatkan pengalaman pengguna. Apabila menulis halaman web PHP, kita boleh mengoptimumkan kesan pemuatan malas imej dengan menulis beberapa fungsi. Butiran di bawah

Bagaimana untuk mengurangkan penggunaan memori melalui fungsi php? Bagaimana untuk mengurangkan penggunaan memori melalui fungsi php? Oct 05, 2023 pm 01:45 PM

Bagaimana untuk mengurangkan penggunaan memori melalui fungsi PHP Dalam pembangunan, penggunaan memori adalah pertimbangan yang sangat penting. Jika sejumlah besar memori digunakan dalam atur cara, ia boleh menyebabkan kelembapan atau malah ranap program. Oleh itu, mengurus dan mengurangkan penggunaan memori secara munasabah adalah isu yang perlu diberi perhatian oleh setiap pembangun PHP. Artikel ini akan memperkenalkan beberapa kaedah untuk mengurangkan penggunaan memori melalui fungsi PHP, dan menyediakan contoh kod khusus untuk rujukan pembaca. Gunakan fungsi unset() untuk melepaskan pembolehubah dalam PHP Apabila pembolehubah tidak diperlukan lagi, gunakan

Sintaks asas dan aplikasi fungsi panggil balik dalam Java Sintaks asas dan aplikasi fungsi panggil balik dalam Java Jan 30, 2024 am 08:12 AM

Pengenalan kepada penulisan asas dan penggunaan fungsi panggil balik Java: Dalam pengaturcaraan Java, fungsi panggil balik adalah corak pengaturcaraan biasa Melalui fungsi panggil balik, kaedah boleh dihantar sebagai parameter kepada kaedah lain, dengan itu mencapai panggilan tidak langsung kaedah tersebut. Penggunaan fungsi panggil balik adalah sangat biasa dalam senario seperti didorong peristiwa, pengaturcaraan tak segerak dan pelaksanaan antara muka. Artikel ini akan memperkenalkan penulisan asas dan penggunaan fungsi panggil balik Java, dan memberikan contoh kod khusus. 1. Definisi fungsi panggil balik Fungsi panggil balik ialah fungsi khas yang boleh digunakan sebagai parameter

Ringkasan kaedah untuk melaksanakan fungsi penyuntingan dan pemprosesan imej menggunakan fungsi pemprosesan imej PHP Ringkasan kaedah untuk melaksanakan fungsi penyuntingan dan pemprosesan imej menggunakan fungsi pemprosesan imej PHP Nov 20, 2023 pm 12:31 PM

Fungsi pemprosesan imej PHP ialah satu set fungsi yang khusus digunakan untuk memproses dan mengedit imej Ia menyediakan pembangun dengan fungsi pemprosesan imej yang kaya. Melalui fungsi ini, pembangun boleh melaksanakan operasi seperti pemangkasan, penskalaan, putaran dan penambahan tera air pada imej untuk memenuhi keperluan pemprosesan imej yang berbeza. Pertama, saya akan memperkenalkan cara menggunakan fungsi pemprosesan imej PHP untuk mencapai fungsi pemangkasan imej. PHP menyediakan fungsi imagecrop(), yang boleh digunakan untuk memangkas imej. Dengan melepasi koordinat dan saiz kawasan pemangkasan, kita boleh memangkas imej

Pengenalan kepada fungsi PHP: fungsi strtr(). Pengenalan kepada fungsi PHP: fungsi strtr(). Nov 03, 2023 pm 12:15 PM

Pengenalan fungsi PHP: fungsi strtr() Dalam pengaturcaraan PHP, fungsi strtr() ialah fungsi penggantian rentetan yang sangat berguna. Ia digunakan untuk menggantikan aksara atau rentetan tertentu dalam rentetan dengan aksara atau rentetan lain. Artikel ini akan memperkenalkan penggunaan fungsi strtr() dan memberikan beberapa contoh kod khusus. Sintaks asas fungsi strtr() adalah seperti berikut: strtr(string$str, array$replace) dengan $str ialah perkataan asal yang akan diganti.

Membandingkan fungsi PHP dengan fungsi dalam bahasa lain Membandingkan fungsi PHP dengan fungsi dalam bahasa lain Apr 10, 2024 am 10:03 AM

Fungsi PHP mempunyai persamaan dengan fungsi dalam bahasa lain, tetapi juga mempunyai beberapa ciri unik. Secara sintaksis, fungsi PHP diisytiharkan dengan fungsi, JavaScript diisytiharkan dengan fungsi, dan Python diisytiharkan dengan def. Dari segi parameter dan nilai pulangan, fungsi PHP menerima parameter dan mengembalikan nilai JavaScript dan Python juga mempunyai fungsi yang serupa, tetapi sintaksnya berbeza. Dari segi skop, fungsi dalam PHP, JavaScript dan Python semuanya mempunyai skop global atau tempatan Fungsi global boleh diakses dari mana-mana sahaja, dan fungsi tempatan hanya boleh diakses dalam skop pengisytiharan mereka.

Sejauh manakah prestasi fungsi PHP? Sejauh manakah prestasi fungsi PHP? Apr 18, 2024 pm 06:45 PM

Prestasi fungsi PHP yang berbeza adalah penting untuk kecekapan aplikasi. Fungsi dengan prestasi yang lebih baik termasuk gema dan cetakan, manakala fungsi seperti str_replace, array_merge dan file_get_contents mempunyai prestasi yang lebih perlahan. Sebagai contoh, fungsi str_replace digunakan untuk menggantikan rentetan dan mempunyai prestasi sederhana, manakala fungsi sprintf digunakan untuk memformat rentetan. Analisis prestasi menunjukkan bahawa ia hanya mengambil masa 0.05 milisaat untuk melaksanakan satu contoh, membuktikan bahawa fungsi berfungsi dengan baik. Oleh itu, menggunakan fungsi dengan bijak boleh membawa kepada aplikasi yang lebih pantas dan cekap.

See all articles