5

私は名前空間にかなり慣れていません(そして、はい、PHPドキュメントの名前空間のセクションを読みました)。複数のファイルに関して、名前空間の範囲は何であるか疑問に思います。グローバルコードを持つファイルにそのファイルを含めるか要求する場合、名前空間は1つのファイルを超えて有効ですか?さらに、それはグローバルコードにどのように影響しますか?グローバルコードで構文的に何かを変更することを余儀なくされますか?

たとえば、ファイルA.phpがあるとします。私が持っていたいのはこれです:

namespace A;
class Abc { ... }

そして、グローバルコードを含むファイルがあるとしましょう。それをmain.phpと呼びます。

include("A.php");
class Abc { ... }
$abc = new Abc(); // Should be global Abc, right?
$abcFromNameSpace = new A\Abc(); // Should be namespace Abc, right?
...

フォローアップの質問として、main.phpにグローバルコードしかない上記の例とは対照的に、名前空間を持つ別のファイル内に名前空間を持つファイルを含めると、スコープに関してどうなるのか疑問に思います。これは次のように機能しますか?

namespace A;
class Abc { ... }

そして、グローバルコードを含むファイルがあるとしましょう。それをB.phpと呼びます。

namespace B;
include("A.php");
class Abc { ... }
$abc = new B\Abc(); // Should be namepsace B Abc, right?
$abcFromNameSpace = new A\Abc(); // Should be namespace A Abc, right?
4

1 に答える 1

7

現在のファイルまたはクラススコープの外にあるクラスを参照するときはいつでも、その名前空間を使用します。

<?php
namespace B;

$class = new \A\Abc();

ただし、スクリプトで名前空間を「使用」する場合は、省略できます。

<?php
namespace B;

use A\Abc;

$class = new Abc();
于 2013-03-06T05:49:40.290 に答える