Php 如何将从另一个命名空间导入的普通函数作为可调用函数传递?

Php 如何将从另一个命名空间导入的普通函数作为可调用函数传递?,php,namespaces,php-7,Php,Namespaces,Php 7,假设我有一个导入语句: use function A\B\C\fun; 然后我可以像这样使用fun: $result = fun($something); 现在我想把fun传递给另一个期望可调用的函数/方法,例如: $other_array = array_map('fun', $some_array); $other_array = array_map('A\B\C\fun', $some_array); 这两种方法都行不通。PHP声称,fun无法识别,即使直接由这些语法变体调用,fun

假设我有一个导入语句:

use function A\B\C\fun;
然后我可以像这样使用
fun

$result = fun($something);
现在我想把
fun
传递给另一个期望
可调用的函数/方法,例如:

$other_array = array_map('fun', $some_array);
$other_array = array_map('A\B\C\fun', $some_array);
这两种方法都行不通。PHP声称,
fun
无法识别,即使直接由这些语法变体调用,
fun
也会起作用。

似乎起作用:

<?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);

}
似乎有效:

<?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);

}

我猜您依赖于自动加载程序来
包含定义函数的实际文件……不幸的是,自动加载程序只在尝试使用未定义的类或接口而不是函数时启动。您必须首先手动
包含相关文件。

我猜您是依靠自动加载程序来
包含定义函数的实际文件……不幸的是,自动加载程序仅在尝试使用未定义的类或接口而非函数时启动。您必须首先手动包含相关文件。

知道实际错误消息将有助于解决这一问题,是吗?知道实际错误消息将有助于解决这一问题,是吗?