以下代码导致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"
}
}
所以现在我们知道是什么导致它中断,但是我们如何在名称空间之间传递匿名函数?
答案 0 :(得分:0)
命名空间MyNamespace {
class MyClass {
function __construct(array $config) {
$func = $config['func'];
$value = 'Hello World';
echo $func($value); // This part throws the error
}
}
}