2016-09-15 5 views
0

私はPHPの名前空間について学んでいます。私が書いたクラスに名前空間を追加しようとしていて、別のスクリプトでその名前空間を参照しようとしています。2つのスクリプトでPHP名前空間宣言を使用するのは正しいですか?

MenuBuilder.php

namespace Andytest\MenuBuilder; 

class MenuBuilder { 

    public function test() { 
     echo 'testing'; 
    } 
} 

test.phpを(クラスが使用されている場合)

namespace Andytest\MenuBuilder; 

require_once 'MenuBuilder.php'; 

$Builder = new MenuBuilder; 
$Builder->test(); 

これからの出力はIのようになります。私はこのようにそれをやりましたexpect - test.phpを実行すると 'testing'という単語が出力されます。

しかし、私はなぜtest.phpに必要とされているMenuBuilder.phpで既に無効になっているので、namespace Andytest\MenuBuilderがtest.phpに必要なのか分かりませんか? test.phpのnamespace行を削除しても動作しません。

これを正しく実行していますか?

あなたは namespace代わりの useを使用するので、ファイルは、あなたがそれを作成するすべてのクラスはそのため new MenuBuilder();が実際に呼び出して、同じ名前空間にあることが use場合には指定されていない見込ん代わり namespace Andytest\MenuBuilder;

use Andytest\MenuBuilder\MenuBuilder;を持っている必要がありtest.php

+0

を見つける傾けることを教えなければならないtest.phpnamespace変わってしまう場合は、代わりに' '名前空間Andytest \のMenuBuilderのを;' – Neat

+0

@Neat私はあなたの提案を試して、それも動作します。これは、両方のアプローチが同じ結果をもたらすので、私はそれが混乱しているのを知っている理由です。ご協力ありがとうございました。 – Andy

+0

それは、ファイルの代わりに名前空間を使うと、 'new MenuBuilder'が同じ名前空間にあると予想され、それが衝突することはないので、test.phpの名前空間を変更しようとすると、エラー:) – Neat

答えて

1

new Andytest\MenuBuilder\MenuBuilder();

あなたは、それはそれはあなたが `Andytest \のMenuBuilder \のMenuBuilderを使用する必要がありますtest.phpをでMenuBuilder

関連する問題