Penggunaan lanjutan fungsi tersuai PHP
Fungsi panggil balik
Fungsi panggil balik boleh digunakan dengan fungsi tanpa nama dan fungsi berubah untuk mencapai struktur fungsi yang lebih cantik dan kompleks.
Fungsi panggil balik adalah untuk menjadikan fungsi lebih disesuaikan semasa memproses fungsi Apabila memanggil fungsi ini, anda juga boleh meneruskan fungsi untuk bekerjasama dan membantu dalam pemprosesan.
<?php function woziji($one, $two, $func) { //規(guī)定:檢查$func是否是函數(shù),如果不是函數(shù)停止執(zhí)行本段代碼,返回false if(!is_callable($func)) { return false; } //把$one、$two相加,再把$one和$two傳入$func這個(gè)函數(shù)中處理一次 //$func是一個(gè)變量函數(shù),參見變量函數(shù) echo $one + $two + $func($one,$two); } //我們定義幾個(gè)函數(shù)試試 function plusx2($foo ,$bar) { $result = ($foo+$bar)*2; return $result; } function jian($x, $y) { $result = $x - $y; return $result; } //調(diào)用一下函數(shù),woziji,向里面?zhèn)魅雲(yún)?shù)試試 echo woziji(20,10,'plusx2'); // 輸出結(jié)果為 90 //將plusx2改成jian試試結(jié)果 echo woziji(20,10,'jian'); //輸出結(jié)果為 40 ?>
Proses pemprosesan adalah seperti berikut:
Tugaskan 20 kepada parameter formal $one, 10 hingga $two, dan dua fungsi pembolehubah plusx2 atau jian ditugaskan kepada $func
Dalam fungsi woziji, tentukan sama ada plusx2 atau jian ialah fungsi Jika ia bukan fungsi, kembalikan palsu dan hentikan pelaksanaan
Paparan plusx2 Atau jian ialah fungsi. Oleh itu, $satu = 20, $dua =10 ditambah Selepas penambahan, $satu dan $dua dibawa ke dalam $func($satu,$dua).
dibawa masuk dan $func berubah-ubah dan boleh plusx2 atau jian. Jika ia adalah plusx2, dua keputusan $one = 20, $two = 10 memberikan $foo dan $bar dalam fungsi plusx2
$foo + $bar kali 2 dan kemudian kembali hasil ke lokasi pengiraan badan fungsi woziji: $satu + $dua + $func($satu,$dua);
Dengan cara ini, hasil utama operasi diperolehi
Sekarang kita memahami fungsi panggil balik: dalam panggilan balik, masukkan nama fungsi dan tambah () kurungan pada nama fungsi. Kenali ia sebagai fungsi pembolehubah dan laksanakannya bersama-sama.
Fungsi pembolehubah
Fungsi pembolehubah, kami juga akan memanggilnya fungsi pembolehubah
Penggunaan fungsi pembolehubah adalah seperti ini :
<?php function demo() { echo '天王蓋地虎'; } function test() { echo '小雞燉蘑菇'; } $fu = 'demo'; //把$fu變?yōu)榱薲emo,把demo后加上了一個(gè)括號(hào),就執(zhí)行函數(shù)了 $fu(); // 輸出為 天王蓋地虎 //把$fu的值改為test字符串再試試? ?>
?
Fungsi tanpa nama
Kadangkala fungsi hanya untuk kita Untuk beberapa pemprosesan sementara, ada tidak perlu menggunakan semula fungsi tersebut. Sangat menyusahkan untuk memberi nama, jadi fungsi tanpa nama diperlukan untuk mengendalikannya
Oleh kerana fungsi tanpa nama tidak mempunyai nama, jika anda ingin menggunakannya, anda perlu. untuk mengembalikannya kepada pembolehubah.
Penggunaan pertama fungsi tanpa nama adalah untuk memberikan tugasan secara langsung kepada pembolehubah, dan memanggil pembolehubah ialah fungsi panggilan.
Fungsi tanpa nama fungsi pembolehubah
<?php $greet = function($name) { echo $name.',你好'; }; $greet('明天'); //輸出 明天,你好 $greet('PHP'); // 輸出 PHP,你好 ?>
Fungsi tanpa nama panggil balik
<?php function woziji($one,$two,$func) { //規(guī)定:檢查$func是否是函數(shù),如果不是函數(shù)停止執(zhí)行本段代碼,返回false if(!is_callable($func)) { return false; } //把$one、$two相加,再把$one和$two傳入$func這個(gè)函數(shù)中處理一次 //$func是一個(gè)變量函數(shù),參見變量函數(shù) echo $one + $two + $func($one,$two); //結(jié)果為: 150 } woziji(20,30,function($foo,$bar) { $result = ($foo+$bar)*2; return $result; } ); ?>
Fungsi Dalaman:
Fungsi dalaman bermaksud fungsi diisytiharkan di dalam fungsi.
Nota:
Nama fungsi dalaman tidak boleh menjadi nama fungsi sedia ada
Dengan mengandaikan bahawa fungsi dalaman ditakrifkan dalam fungsi a, fungsi a tidak boleh digunakan dua kali .
Mari lihat kod di bawah, anda akan mempelajarinya dengan cepat:
<?php function foo() { echo '我是函數(shù)foo喲,調(diào)一下我才會(huì)執(zhí)行定義函數(shù)bar的過程<br />'; function bar() { echo '在foo函數(shù)內(nèi)部有個(gè)函數(shù)叫bar函數(shù)<br />'; } } //現(xiàn)在還不能調(diào)用bar()函數(shù),因?yàn)樗€不存在 bar(); foo(); //現(xiàn)在可以調(diào)用bar()函數(shù)了,因?yàn)閒oo()函數(shù)的執(zhí)行使得bar()函數(shù)變?yōu)橐讯x的函數(shù) bar(); //再調(diào)一次foo()看看是不是會(huì)報(bào)錯(cuò)? foo(); ?>
Anda akan mendapati terdapat fungsi bar yang ditakrifkan di dalam fungsi foo() di atas, iaitu nombor fungsi dalaman .
Selepas pemerhatian dan percubaan yang teliti, kami akan membuat kesimpulan berikut:
1 Memanggil foo() dua kali akan melaporkan ralat
2. Fungsi bar tidak boleh dilaksanakan tanpa melaraskan fungsi foo(), kerana bar berada di dalam foo