如何在PHP的类字段中存储匿名函数?

时间:2014-07-02 04:11:13

标签: php anonymous-function

我正在尝试声明一个函数并将其存储在我班级的private static字段中。我有这样的事情:

class MyClass {
    private static $myFunction = function() { /* stuff here */ };
}

但是我在创建函数的行上不断出现此错误:

  

PHP Parse错误:语法错误,意外'功能'(T_FUNCTION)...

我这是基于this answer以及PHP manual pages所说的内容。但这对我不起作用。为什么?我该怎么办?

所有这一切的目标是我能够将函数存储在数组中:

private static $options = [
    'function' => MyClass::$myFunction
];

那么您认为实现这一目标的最佳方式是什么?如果你想知道的话,我正在使用PHP 5.5.14。

更新

我尝试过几种不同的方法。像这样:

class MyClass {
    private static function myFunction() { /* Expression */ }
    private static $options = [
        'function' => MyClass::myFunction()
    ];
}

但它让我想到了一个意想不到的错误'(':

  

PHP Parse错误:语法错误,意外'(',期待']'...

而且这个。哪个是唯一有效的:

class MyClass {
    private static function myFunction() { /* Expression */ }

    public static function anotherFunction() {
        $options = [ 'function' => MyClass::myFunction() ];
    }
}

但我需要让同一个类的更多方法可以访问此$options var,因此它不是解决方案。

我宁愿远离构造函数,因为它只是一个帮助类而且我不想搞乱它的实例和这类事情。

1 个答案:

答案 0 :(得分:1)

您可以使用此方法

class MyClass{
    private static function myFunction(){ echo __FUNCTION__;}
    private static $options = [
        'function' => ['MyClass', 'myFunction']
    ];

    public static function test(){
        $function = self::$options['function'];
        $function();
    }

    }
MyClass::test();

这可能是因为数组可能是callable