web-dev-qa-db-ja.com

関数内でphp名前空間を使用する

自分の関数内で名前空間を使用しようとすると、解析エラーが発生します

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

function go(){

  use test\Class;

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

    echo go();
35
westnblue

から インポートのスコープ規則

Useキーワードは、ファイルの最も外側のスコープ(グローバルスコープ)または名前空間宣言内で宣言する必要があります。これは、インポートが実行時ではなくコンパイル時に行われるため、ブロックスコープにできないためです。

したがって、このように配置する必要があり、使用はグローバルレベルで指定する必要があります

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

function go(){
    $go = 'ok';
    return $go;
}
echo go();

以下のマニュアルの例5を確認してください http://php.net/manual/en/language.namespaces.importing.php のマニュアルを参照してください

54
Nishant

マニュアル から:

useキーワードは、ファイルの最も外側のスコープ(グローバルスコープ)または名前空間宣言内で宣言する必要があります。

4
lonesomeday