PHP函数总结 (五)

<?php
    /**
     * 回调函数:
     *  指调用函数时并不是传递一个标准的变量作为参数,而是将另一个函数作为参数传递到调用的函数中
     *  使用回调函数可以 将一段自己定义的功能传到函数内部使用
     * 1. 变量函数(可变函数)
     *      变量后面有圆括号,PHP将寻找与变量的值同名的函数,并尝试执行
     */

    // 变量函数
    function one(){
        echo 'one';
    }
    function two(){
        echo 'two';
    }
    function say($words){
        echo $words;
    }
    $a = 'one';
    $a();
    echo '<hr>';
    $a = 'two';
    $a();
    echo '<hr>';


    /**
     * 借助变量函数,声明一个回调函数
     * @param callback $func 传递一个函数名称字符串作为参数
     */
    function whattodo($func){
        $func();
    }

    whattodo('one');
    echo '<hr>';

    /**
     * 借助call_user_func_array(callable $callback , array $param_arr ),自定义回调函数
     * 调用回调函数,并把一个数组参数作为回调函数的参数
     */
    function whattodo2(){
        call_user_func_array('say',array('hello word'));
    }

    whattodo2();
    echo '<hr>';

    /**
     * 借助call_user_func(callable $callback [, mixed $parameter [, mixed $... ]]),自定义回调函数
     * 把第一个参数作为回调函数调用
     */
    function whattodo3(){
        call_user_func('say','hello word!');
    }

    whattodo3();
    echo '<hr>';

    /**
     * 类中静态函数和对象的方法回调:
     *    回调类中的成员犯法:第一个参数必须使用数组,并且指定两个元素
     */
    class Demo{
        static function eat($food){
            echo $food;
        }
    }
    // 类名称字符串
    call_user_func_array(array("Demo","eat"),array('rice'));
call_user_func_array("Demo::eat", array('rice'));
echo '<hr>'; class Demo2{ function play($play){ echo $play; } } $obj = new Demo2(); // 对象引用 call_user_func_array(array($obj,"play"),array('play games'));

call_user_func_array(array(new Demo2(),"play"),array('play games'));
分情破爱始乱弃,流落天涯思别离。 如花似玉负情意,影如白昼暗自迷。 随风浮沉千叶落,行色匆匆鬓已稀。
原文地址:https://www.cnblogs.com/cshaptx4869/p/8878220.html