将匿名函数绑定到PHP中的现有函数

时间:2013-02-14 22:44:55

标签: php anonymous-function

有没有办法将现有函数绑定到php中的匿名函数?像

这样的东西
$my_func = strip_tags();

或者我必须将它重新定义为一种匿名包装器,并使用正确的参数和返回值吗?

我尝试使用谷歌搜索,但我想我没有正确地使用正确的搜索短语,因为我没有在第一页找到结果。

编辑我正在创建一种函数管道(?),我可以在其中传递数据和函数,我想将函数作为变量传递。我想保持语法相同,并且能够使用$output = $function($data)而无需为本机函数编​​写一堆匿名包装。另外,我想避免使用call_user_func,因此我不必重新编写现有代码。

2 个答案:

答案 0 :(得分:3)

您可以使用它的名称绑定该函数。看看php的callable界面

上述手册中的代码

<?php 

// An example callback function
function my_callback_function() {
    echo 'hello world!';
}

// An example callback method
class MyClass {
    static function myCallbackMethod() {
        echo 'Hello World!';
    }
}

// Type 1: Simple callback
call_user_func('my_callback_function'); 

// Type 2: Static class method call
call_user_func(array('MyClass', 'myCallbackMethod')); 

// Type 3: Object method call
$obj = new MyClass();
call_user_func(array($obj, 'myCallbackMethod'));

// Type 4: Static class method call (As of PHP 5.2.3)
call_user_func('MyClass::myCallbackMethod');

// Type 5: Relative static class method call (As of PHP 5.3.0)
class A {
    public static function who() {
        echo "A\n";
    }
}

class B extends A {
    public static function who() {
        echo "B\n";
    }
}

call_user_func(array('B', 'parent::who')); // A
?> 

答案 1 :(得分:3)

简单。

$my_func = 'strip_tags';
$output = $my_func($data);