私は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
で
を見つける傾けることを教えなければならない
test.php
でnamespace
変わってしまう場合は、代わりに' '名前空間Andytest \のMenuBuilderのを;' – Neat@Neat私はあなたの提案を試して、それも動作します。これは、両方のアプローチが同じ結果をもたらすので、私はそれが混乱しているのを知っている理由です。ご協力ありがとうございました。 – Andy
それは、ファイルの代わりに名前空間を使うと、 'new MenuBuilder'が同じ名前空間にあると予想され、それが衝突することはないので、test.phpの名前空間を変更しようとすると、エラー:) – Neat