Accept function as parameter in PHP

后端 未结 8 759
Happy的楠姐
Happy的楠姐 2020-11-28 06:22

I\'ve been wondering whether is possible or not to pass a function as parameter in PHP; I want something like when you\'re programming in JS:

object.exampleM         


        
相关标签:
8条回答
  • 2020-11-28 07:01

    PHP VERSION >= 5.3.0

    Example 1: basic

    function test($test_param, $my_function) {
        return $my_function($test_param);
    }
    
    test("param", function($param) {
        echo $param;
    }); //will echo "param"
    

    Example 2: std object

    $obj = new stdClass();
    $obj->test = function ($test_param, $my_function) {
        return $my_function($test_param);
    };
    
    $test = $obj->test;
    $test("param", function($param) {
        echo $param;
    });
    

    Example 3: non static class call

    class obj{
        public function test($test_param, $my_function) {
            return $my_function($test_param);
        }
    }
    
    $obj = new obj();
    $obj->test("param", function($param) {
        echo $param;
    });
    

    Example 4: static class call

    class obj {
        public static function test($test_param, $my_function) {
            return $my_function($test_param);
        }
    }
    
    obj::test("param", function($param) {
        echo $param;
    });
    
    0 讨论(0)
  • 2020-11-28 07:02

    According to @zombat's answer, it's better to validate the Anonymous Functions first:

    function exampleMethod($anonFunc) {
        //execute anonymous function
        if (is_callable($anonFunc)) {
            $anonFunc();
        }
    }
    

    Or validate argument type since PHP 5.4.0:

    function exampleMethod(callable $anonFunc) {}
    
    0 讨论(0)
提交回复
热议问题