在数组中使用闭包

时间:2012-09-06 19:25:26

标签: php

我有类似的代码:

$name = '_DBR'; // This comes from a function call

$this->_Inits['_DBR'] = function () { return get_library('Database')->getConnection('users', 'read'); };

$inits = $this->_Inits[$name];
$result = $inits(); // ERROR: Function name must be a string

return $result;

我得到的错误是:

Function name must be a string in xxxx

有什么方法可以使用数组来存储多个闭包,是否有一种工作方式来访问它们?

我使用PHP 5.4.3

2 个答案:

答案 0 :(得分:4)

是的,请改用call_user_func。

答案 1 :(得分:3)

这在php 5.3.10中对我很好。

$m = array();
$m['fish'] = function() { print "Hello\n"; };
$f = $m['fish'];
$f();