匿名函数作为命名空间之间的参数传递

时间:2014-05-22 07:13:01

标签: php namespaces anonymous-function

以下代码导致PHP抛出错误:

namespace NamespaceOne;

class MyClass {
    function __construct( array $config ) {
        $func = $config['func'];
        $value = 'Hello World';
        echo $func( $value );   // This part throws the error
    }
}

该类在另一个文件中实例化:

namespace NamespaceTwo;

$class = new \NamespaceOne\MyClass( array(
    'func' => function( $v ) { return $v; }
));

以错误终止:

Fatal error: Function name must be a string [...]

修改

如果我在命名空间中重新声明该函数,它可以工作:

class MyClass {
    function __construct( array $config ) {
        $config['func'] = function( $v ) { return $v; };
        $func = $config['func'];
        $value = 'Hello World';
        echo $func( $value );   // Echos "Hello World"
    }
}

所以现在我们知道是什么导致它中断,但是我们如何在名称空间之间传递匿名函数?

1 个答案:

答案 0 :(得分:0)

命名空间MyNamespace {

class MyClass {

    function __construct(array $config) {
        $func = $config['func'];
        $value = 'Hello World';
        echo $func($value);   // This part throws the error
    }

}

}

相关问题