2012-08-03 10 views
16

私は、特定の名前空間を使用するためにすでにそれを上回っているキーワードを使用しているクラスを拡張しようとしているのでしょうか?同じ名前空間を使用するために継承クラスの上に別の 'use' (完全なパスを使用して)名前空間なしで直接呼び出されるコントローラー、中PHP:拡張クラスは名前空間を呼び出すために別の 'use'を必要としますか?

namespace Core; 

use System\Plugin; 

class Front extends Application { } 

となりました:

use System\Plugin; 

class PageController extends Front { } 

またはそれは同様「使用」することなく、仕事と私にできるようになる。このような状況System \ Pluginの名前空間を使用する:

class PageController extends Front { } 

答えて

18

いいえ、両方のファイルに "use"ステートメントが必要です。 Useはファイルレベルのキーワードであり、継承の影響を受けません。

scoping rules for importingと、マニュアルページの下部に記載されていることを説明する小さなボックスを参照してください。

+0

Frontクラスの中で、プラグインの名前空間からオブジェクトをインスタンス化していれば、継承されたクラスの 'Use System \ Plugin'なしで使用できます。 –

+0

もちろん、useステートメントは必ずしも必要ではありません。完全修飾名前空間の使用も同様に機能します。 – Lusitanian

+6

クラスが親クラスから 'use'ステートメントを継承できるのはいいですね(DRYer) – hohner

関連する問題