2016-04-14 27 views
4

"init.php" adlı bir dosyam var, burada tüm sınıflarımı bir ad alanı ile ekliyorum. Bunlardan biri örneğin: MyClass \ Helper.Ad alanları: "global olarak kullan"

Her zaman başlangıçta, bu sınıflardan sonra, MyClass \ Helper kullanan başka bir dosyanın (b.php) eklenmesi vardır.

Son olarak, bu dosya "init", MyClass \ Helper'ı da kullanan dizin tarafından gereklidir.

Yani: Ben "kullanırsanız (diğer dosyalar bulunmayan sınıf

init.php 
    -> Require libs/Helper.php (final namespace: MyClass\Helper) 
    -> Require b.php 
     -> Use MyClass\Helper 

index.php 
    -> Require init.php 
    -> Use MyClass\Helper 

Şimdi tüm sınıfların use MyClass\Helper as Helper dahil edilmesinden sonra, benim init.php koymak istiyorum ama çalışmıyor Helper "MyClass \ Helper yerine" ve el ile b.php (derslerden sonra dahil) ve index.php dizinine koymam gerekiyor.

Tüm dosyalar için "farklı olarak" kaydetmenin bir yolu var mı?

+1

PHP kullanım kılavuzuna göre yalnızca ad alanları özelliklerini (özellikle 'use' anahtar sözcüğünü) kullanamazsınız. : //php.net/manual/en/language.namespaces.importing.php > İçe aktarma kuralları dosya bazındadır, dahil edilen dosyalar ana dosyanın içe aktarma kurallarını devralmaz. –

+1

Bu yanıtla ilgileniyorsanız: http://stackoverflow.com/a/19890311/488666 –

+0

Frosty Z, yorumunuz doğru. Lütfen bir cevap olarak yeniden yapmayı düşünün, böylece herkes bunu kabul edebilir. Ad alanları PHP'de ve diğer birçok dilde dosya bazında işlenir. –

cevap

0

Bütün fikir, hiçbir şey eklememeyi denemektir. spl_autoload_register'u sınıf otomatik yükleyicinizi kaydettirmeye çalışın, böylece 'include' ve 'require' kullanmanıza gerek kalmaz.