2016-11-17 9 views
0

私はmyfile.phpファイル2回..私はこのようなmyfile.php何かの始まりに配置する方法があるかどうかを知りたい、次のとおりです。NAMESPACE宣言を条件付きにしますか?

if($authorized){ 
    Namespace MyProject; 
} 

function ABC(){} 
function EFG(){} 

(私は機能-再定義エラーを回避するために、これを行うに尋ねるいけないしてくださいなぜ私はそのようなことをするのですか...私はif function_existsなどがあることを知っていますが、私は私が尋ねるものに答えが必要です)。

アップデート:私はfunction XYZ()を定義する必要があり、他のフレームワークがロードされる前に(これは、新たにグローバルfunction XYZ()定義する)ことを使用しているので、私は、これを行う 。だから私は、フレームワークがロードされる前にその関数を(別の機能を使って)使いたいのですが、フレームワークがロードされた後、フレームワークの決定に従って動作するはずです。

+0

私はあなたがそれをすることができないと確信しています。 –

+1

ここで何をしようとしていますか?間違った問題を解決しようとしているようです。 –

+1

関数がエラーを再定義するのは、名前空間が抱かれている理由です。ここで達成しようとしていることを完全に理解しているとは思いません。 –

答えて

2

名前空間を条件付きにする方法はありますか?

これは直接行うことはできませんが、define()メソッドを使用して自分で作成することをおすすめします。クラスを必要とするファイルが、ファイルにアクセスするための許可された定義を必要とする場所。

define('IN_NAMESPACE', 0); 

if(defined('IN_NAMESPACE')) { 
    // authorized 
} 

しかし、あなたが繰り返されているクラス名を心配している場合は、重複を取得しないので、名前空間は、例えば、環境宣言するためのものである:

namespace Environments\One; 
class Example { } 

namespace Environments\Two; 
Class Example { } 

use Environments\One\Example as ExampleOne; 
use Environments\Two\Example as ExampleTwo; 

$e_o = new ExampleOne(); 
$e_t = new ExampleTwo(); 

それとも単に、直接あなたが言います

$e_o = new Environments\One\Example(); 
$e_t = new Environments\Two\Example(); 

また、この問題はPHPでは標準的ではありません。これらの問題やSingleton/Dependency Injectionの設計パターンを克服するには、MVC手法を使用してください。

関連する問題