2

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

$my_func = strip_tags();

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

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

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

4

2 回答 2

3

简单的。

$my_func = 'strip_tags';
$output = $my_func($data);
于 2013-02-15T01:50:51.560 回答
3

您可以通过函数的名称绑定函数。看看来自 php的可调用接口

上述手册中的代码

<?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
?> 
于 2013-02-14T22:47:59.170 回答