2015-04-29 11 views
5

Tüm sınıfları bir ad alanı altında tek tek içermesi gereken bir çözüm var mı?PHP namespace kullan - Bir isim alanı altındaki tüm sınıfları dahil etmenin bir çözümü

Laravel dosyam çok büyüyor, çünkü ad alanlarının bir yük yüklemesini de dahil etmem gerekiyor ... Oldukça korkunç! Geçici bir çözüm olarak

, neden şu olabilir çalışmayacağım:

namespace.Blah.txt:

use Blah\Blah; 
use Blah\Bloh; 

php kodu:

eval(file_get_contents("namespace.Blah.txt"); 

Ben alabilirsem Bu iş için, bir dosyanın içeriğini değerlendirebilirdim ... Anlıyorum, bu biraz noob ... ama ... kahretsin!

+0

Tüm sınıfları otomatik olarak belirli bir ad alanına sahip mi? –

+0

Kaç tane sınıftan bahsediyoruz? – Ravan

+0

Şu anda yaklaşık 20 dersim var. Bunların hepsini her bir kontrolöre dahil etmek zorundayım. Gerçekten, TINY olduğu gibi sınıflar için bellek ilan etmekle uğraşmaktan vazgeçmedim ... ve asla otomatik olarak örneklenmemişler, bu yüzden asla doldurulamayacaklar. Bu sadece şu anda benim için bir sorun değil ... Biri olursa, eski yoldan geri döneceğim ... Ama neden anlamıyorum() '' çalışmıyor? – Jimmyt1988

cevap

7

yoktur, ancak aşağıdaki RFC geçti gibi PHP 7'de Eğer

use FooLibrary\Bar\Baz\{ ClassA, ClassB, ClassC, ClassD as Fizbo }; 

yapabileceksiniz:

https://wiki.php.net/rfc/group_use_declarations

DÜZENLEME:

Not o Bir sınıfta çok fazla kullanım "koku" belirtisi olabilir. Bu sınıf çok fazla değil mi? Yeni "temel" sınıflar oluşturup bunları genişletmeniz gerekmiyor mu?

+0

Bunun için teşekkürler, eğer yukarıda (eval) yapıp yapamayacağımı bilip bilmediğini merak ettim ... Korkunç olduğunu biliyorum ... Ama çaresizim! Ve noob olması durumunda bir noktada değiştirilebilir! – Jimmyt1988

+0

Bir sınıfta çok fazla kullanım "koku" işareti olabilir. Bu sınıf çok fazla değil mi? Yeni "temel" sınıflar oluşturup bunları genişletmeniz gerekmiyor mu? –

+0

Oldukça emin değilim çünkü bu durumda, çalışma derleyici tarafından işlenir çünkü bu çalışmaz. Derleyicinin sınıfı nerede bulacağını bilmesi sadece bir ipucudur, bu yüzden başka bir yerden kullanımı yürütürseniz mevcut sınıfınızda çalışmayacaktır. –