2012-08-03 7 views
16

Belirli bir ad alanını kullanmak için üzerinde 'kullanım' anahtar kelimesi bulunan bir sınıfı genişletdiğim bir durum olup olmadığını merak ediyorum - aynı ad alanını kullanmak için miras sınıfı üzerinde başka bir 'kullanım' eklemem gerekir mi? (Tam yolunu kullanarak) ad vermeden doğrudan denir Kontrolör, şimdiPHP: Sınıfı genişletmek ad alanını çağırmak için başka bir 'kullanım' gerektiriyor mu?

namespace Core; 

use System\Plugin; 

class Front extends Application { } 

ve: Böyle Durum

use System\Plugin; 

class PageController extends Front { } 

veya yanı kullanımına 'olmadan çalışmak ve bana izin System \ Plugin ad alanını kullanmak için:

class PageController extends Front { } 

?

cevap

18

Hayır, her iki dosyada "use" ifadesine ihtiyacınız var. Kullanım, dosya düzeyinde bir anahtar kelimedir ve mirastan etkilenmez.

scoping rules for importing ve el kitabının alt kısmında söylediğimi açıklayan küçük kutuya bakın.

+0

Açıkçası, Front sınıfında Eklenti ad alanının içinden bir nesne başlatmış olsaydım, o zaman, miras alınan sınıfta 'use System \ Plugin' kullanmadan kullanabilirim. –

+0

Elbette ve her zaman bir kullanım ifadesine de gerek yok. Tam nitelikli ad alanı kullanmak da işe yarıyor. – Lusitanian

+6

Sınıflar, sınıfların "sınıflar" ifadelerini devralabilirse iyi olur (örn. DRYer) – hohner