假设我有这个导入声明:
use function A\B\C\fun;
然后我可以像这样使用fun
:
$result = fun($something);
现在我想将fun
传递给期望callable
的另一个函数/方法,例如:
$other_array = array_map('fun', $some_array);
$other_array = array_map('A\B\C\fun', $some_array);
这些都不会奏效。 PHP声称fun
无法识别,即使直接通过其中任何一种语法变体调用fun
也可以。{/ p>
答案 0 :(得分:3)
我猜你依靠自动加载器来include
定义函数的实际文件......遗憾的是,当尝试使用未定义的类或接口时,自动加载器才开始运转,不是函数。您必须先手动include
相关文件。
答案 1 :(得分:1)
This似乎有效:
<?php
namespace A\B\C {
function doubler($i) {
return $i *= 2;
}
}
namespace D {
$doubled = array_map('A\B\C\doubler', [1,2,3]);
echo json_encode($doubled);
}
输出:
[2,4,6]
但这听起来像你试过的?不确定有什么区别。如果您包含错误,则可能有帮助