在PHP中将函数作为另一个函数的参数传递

在PHP中将函数作为另一个函数的参数传递,php,function,oop,Php,Function,Oop,我想将函数(而不是结果)作为另一个函数的参数传递。假设我有 function double_fn($fn) 我想运行给定的函数($fn)两次。PHP中有这样的机制吗?我知道你在python中函数是一种变量,但PHP类似吗 @编辑 有没有类似的使用方法 function double_fn(parrot::sing()) 由于5.3(注意)您可以非常自然地使用闭包: function double_fn(callable $fn) { $fn(); $fn(); } doub

我想将函数(而不是结果)作为另一个函数的参数传递。假设我有

function double_fn($fn)
我想运行给定的函数($fn)两次。PHP中有这样的机制吗?我知道你在python中函数是一种变量,但PHP类似吗

@编辑 有没有类似的使用方法

function double_fn(parrot::sing())
由于5.3(注意)您可以非常自然地使用闭包:

function double_fn(callable $fn)
{
    $fn();
    $fn();
}

double_fn(function() {
    echo "hi";
});
(注意)仅从5.4开始键入提示

类型可以是以下几种:

  • 包含要调用的函数名的字符串
  • 闭包(如上所述)
  • 由类(或实例)和要调用的方法组成的数组
  • 手册中解释了上述示例

    更新 编辑有类似的方法使用吗

    function double_fn(parrot::sing())
    
    函数double\u fn(parrot::sing())

    这样做将把
    parrot::sing()
    的结果传递到函数中;要向静态方法传递“引用”,您需要使用以下任一方法:

    double_fn('parrot::sing');
    double_fn(['parrot', 'sing']);
    
    您可以使用PHP 5.3.0中介绍的:

    function double_fn($fn) {
      $fn();
    }
    
    
    double_fn(function(){
      // fonction body
    });
    
    或:


    是。。。有点不同。将函数名作为字符串传递

    function foo()
    {
      echo "foobar\n";
    }
    
    function double_fn($fn)
    {
      $fn();
      $fn();
    }
    
    double_fn('foo');
    

    你从5.3开始就躲在岩石下了吗?:)@杰克:为什么我要定义一个只调用另一个函数的匿名函数?谁说匿名函数调用另一个函数?