5.4.7 PHP制作回調(diào)函數(shù)1

變量函數(shù)

<?php
    // 聲明回調(diào)函數(shù)filter, 在0-100的整數(shù)中通過自定義條件過濾不要的數(shù)字
    function filter( $fun ) {
        for($i=0; $i <= 100; $i++) {
            //將參數(shù)變量$fun加上一個(gè)圓插號(hào)$fun(), 則為調(diào)用和變量$fun值同名的函數(shù)
            if( $fun($i) ) 
                 continue;   
            echo $i.'<br>'; 
        }
    }
   //聲明一個(gè)函數(shù)one, 如果參數(shù)是3的倍數(shù)就返回true, 否則返回false
   function one($num) {
        return $num%3 == 0;
    }
    // 聲明一個(gè)函數(shù)two, 如果參數(shù)是一個(gè)回文數(shù)(翻轉(zhuǎn)后還等于自己的數(shù))返回true, 否則返回false
    function two($num) {
        return $num == strrev($num);
    }
    filter("one");      //打印出100以內(nèi)非3的倍數(shù),參數(shù)"one"是函數(shù)one()的名稱字符串,是一個(gè)回調(diào)
    echo '--------------------<br>';
    filter('two');      //打印出100以內(nèi)非回文數(shù),參數(shù)"two"是函數(shù)two()的名稱字符串,是一個(gè)回調(diào)

借助call_user_func_array()函數(shù)自定義回調(diào)函數(shù)

<?php
    /** 聲明一個(gè)函數(shù)fun(), 功能只輸出兩個(gè)字符串,目的是作為call_user_func_array()回調(diào)參數(shù)
        @param  string  $msg1   需要傳遞一個(gè)字符串作為參數(shù)
        @param  string  $msg2   需要傳遞另一個(gè)字符串作為參數(shù)
    */
    function fun($msg1, $msg2) {
        echo '$msg1 = '.$msg1;
        echo '<br>';
        echo '$msg2 = '.$msg2;
    }
    
    /** 通過系統(tǒng)函數(shù)call_user_func_array() 調(diào)用函數(shù)fun()
        第一個(gè)參數(shù)為函數(shù)fun()的名稱字符串
        第二個(gè)參數(shù)則是一個(gè)數(shù)組,每個(gè)元素值會(huì)按順序傳遞給調(diào)用的fun()函數(shù)參數(shù)列表中
    */
    call_user_func_array('fun', array('LAMP', '兄弟連'));
    ```

類靜態(tài)函數(shù)和對(duì)象的方法回調(diào)

<?php
/* 聲明一個(gè)類Demo,類中聲明一個(gè)靜態(tài)的成員方法fun() /
class Demo {
static function fun($msg1, $msg2) {
echo '$msg1 = '.$msg1;
echo '
';
echo '$msg2 = '.$msg2;
}
}
/
聲明一個(gè)類Test, 類中聲明一個(gè)普通的成員方法fun() */
class Test {
function fun($msg1, $msg2) {
echo '$msg1 = '.$msg1;
echo '
';
echo '$msg2 = '.$msg2;
}
}

call_user_func_array( array("Demo", 'fun'), array('LAMP', '兄弟連') );
call_user_func_array( array(new Test(), 'fun'), array('BroPHP', '學(xué)習(xí)型PHP框架') );


>例 test.php

<?php
/*

  • 在使用一個(gè)函數(shù)的時(shí)候, 如果傳一個(gè)變量, 不能解決多大的問題, 就需要將一個(gè)過程進(jìn)入到函數(shù)中, 改變函數(shù)的執(zhí)行行為.
  • 在函數(shù)的調(diào)用時(shí), 在參數(shù)中傳的不是一個(gè)變量或一個(gè)值, 而是一個(gè)函數(shù), 這就是回調(diào)函數(shù)參數(shù)
  • 制作回調(diào)函數(shù)

*/
function demo($num, $n) {
// $n = "test";
for($i=0; $i<$num; $i++) {
if($n($i))
continue;
echo $i."
";
}
}

function test($i) {
    if($i==strrev($i))
        return true;
    else 
        return false;
}
demo(500, "test");

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容