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


Binding an anonymous function to an existing function in PHP

有没有办法将现有函数绑定到php中的匿名函数?类似的东西

$my_func = strip_tags();

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

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

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

简单。

$my_func = strip_tags(...); # string 'strip_tags' before PHP 8.1.0
$output = $my_func($data);
  • https://php.net/callable
  • PHP第一类可调用语法

您可以根据函数的名称绑定函数。看看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
?>