2016-12-09 6 views
0

PHPで名前空間を使うのが初めてで、何かヒットしましたが、私はあまり理解していません。PHPの名前空間 - Parent Childを宣言する場合、なぜ "{Parent}を使用する"必要がありますか?

ファイル:common.phpの

namespace Base; 

function c_foo(){ return 0 }; 

ファイル:worker.php

これは動作しません:

namespace Base\Worker; 

Class worker { 
    public function do_work(){ return c_foo()) }; <--unknown function "c_foo" 
} 

これは動作します:

namespace Base\Worker; 
use Base; 

Class worker { 
    public function do_work(){ return Base\c_foo()) }; 
} 

{namespace}\の関数呼び出しを序文にする必要があることがわかりました。私は間違って何をしているのですが、子名前空間で親名前空間関数を利用できるようにする良い方法はありますか?

答えて

1

あなたは、ファイルの先頭に名前空間Base\Workerを宣言したので、あなたは、その名前空間の外で何かを使用したい場合は、その名前と一緒にその名前空間を含める必要があるため。

あなたが行うことができるはず:

namespace Base\Worker; 
use function Base\c_foo; // php >= 5.6 

c_foo(); 
1

c_foo()を呼び出すと、Base\Worker名前空間で定義された関数が検索されるため、機能しません。 (Base\Worker\c_foo())。 PHP 5.6から関数をインポートすることができます。

use function Base\c_foo; 
関連する問題