2017-07-13 48 views
-1

比方說,我有這樣的import語句:如何將從其他名稱空間導入的普通函數作爲可調用對象傳遞?

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都可以。

回答

2

我猜你是依靠一個自動裝載機到include這個函數被定義的實際文件......不幸的是自動裝載機只在嘗試使用未定義的類時啓動或接口,而不是功能。您必須先手動輸入include相關文件。

+0

是啊知道實際的錯誤信息會幫助解決這個很多,呃? –

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]

但是,這聽起來像你嘗試過什麼?不知道有什麼區別。如果你包含錯誤,它可能會幫助

相關問題