2017-10-05 5 views
-1

私は、すべて同じUSE AS文が必要な別々のファイルにクラスを持っています。例:複数のファイルでクラスエイリアスのグループを(別名として)再利用することは可能ですか?

これらを再利用する方法はありますか?すべてのファイルの先頭に入力する必要はありませんか?

+0

短い答えは:**いいえ**です。 'use'エイリアスの範囲は、それらが定義されているファイルです。 – axiac

+1

一度あなたが現在のファイルのどこかでそれを使用すると、自動的に 'use'を追加するIDEを取得します。 PHPStormがその一つです。クラスの入力を開始し、自動完成させ、Enterを押すと、 'use'ステートメントとして追加されます。かなりストレートです。 – Andrew

答えて

0

そして、あなたのコードは、各ファイルで非常に多くの名前空間/クラス名の輸入を必要とする場合、あなたはあなたのコードベースでtight couplingでかなりの問題があります。これは、アーキテクチャレベルでさらに深刻な問題であることを示している可能性があります( )。

P .:ファイルに実際に必要な名前空間/クラス名のみをインポートする必要があります。

+0

彼らは本当に同じ3つの名前空間を必要とするだけです...だから私はそれがたくさんあるとは言いません。そしてそれらはすべてその名前空間を使用します。冗長コードを減らそうとすると、クラスを追加するたびに書き込む必要があります。 –

+0

このような場合、私は特定のクラスではなく、名前空間(または親の名前空間)をインポートする傾向があります。 –

1

短い答えは:いいえです。

ドキュメントページ"Using namespaces: Aliases/Importing""Scoping rules for importing"セクションで説明します。

useキーワードは、ファイル(グローバルスコープ)の最も外側のスコープや名前空間宣言の中で宣言する必要があります。これは、インポートは実行時ではなくコンパイル時に行われるため、スコープをブロックすることはできません。

注:

は、ルールのインポートファイル単位ごとに、意味はファイルがは、親ファイルのインポートルールを継承しません含まれています。

上記で説明したように、エイリアスはコンパイル時に使用され、生成されたコードには存在しません。一方、他のファイルのインクルードは実行時に行われます。ファイルに定義されているエイリアスと、含まれているファイルの内容が決して満たされません。

関連する問題