在函数内使用php命名空间

wes*_*lue 36 php namespaces function

尝试在我自己的函数中使用名称空间时,我得到一个解析错误

require('/var/load.php');

function go(){

  use test\Class;

    $go = 'ok';
    return $go;
}

    echo go();
Run Code Online (Sandbox Code Playgroud)

Nis*_*ant 56

范围界定规则导入

use关键字必须在文件的最外层范围(全局范围)或命名空间内声明中声明.这是因为导入是在编译时完成的,而不是运行时,所以它不能是块作用域

所以你应该像这样,使用应该在全球一级指定

require('/var/load.php');
use test\Class;

function go(){
    $go = 'ok';
    return $go;
}
echo go();
Run Code Online (Sandbox Code Playgroud)

请查看以下手册中的示例5请参阅http://php.net/manual/en/language.namespaces.importing.php上的手册.


lon*_*day 5

手册

use关键字必须在一个文件中(全球范围)或命名空间内声明的最外层范围声明。

  • @westnblue 表示 `use` 语句只能出现在文件一打开就运行的代码部分。如果你把它放在一个类或一个函数中,它会在类或函数被调用时执行。这与用于命名空间和解析代码的 PHP 系统不兼容,因此您必须将 `use` 语句放在文件的最外层范围内。 (2认同)