2015-04-29 11 views
5

Czy istnieje rozwiązanie polegające na konieczności uwzględnienia wszystkich klas osobno w przestrzeni nazw?Przestrzeń nazw PHP - rozwiązanie obejmujące wszystkie klasy w przestrzeni nazw

Moje pliki Laravel robią się ogromne, ponieważ muszę w dalszym ciągu zawierać mnóstwo przestrzeni nazw ... To jest naprawdę okropne! nie

jako rozwiązanie tymczasowe, dlatego może pracować następujące:

namespace.Blah.txt:

use Blah\Blah; 
use Blah\Bloh; 

kod php:

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

Jeśli mogę dostać to zadziała, mógłbym ocenić zawartość pliku ... Rozumiem, że to trochę noob ... ale ... do cholery!

+0

Podobnie jak w autoload wszystkie klasy o określonym obszarze nazw? –

+0

W ilu uwzględnionych klasach mówimy? – Ravan

+0

Mam w tej chwili około 20 lekcji. Muszę uwzględnić wszystkie z nich w każdym kontrolerze ... Naprawdę nie jestem tak zafascynowany deklarowaniem pamięci dla klas, ponieważ są one TINY ... i nigdy nie są automatycznie tworzone, więc nigdy nie zostaną wypełnione. To po prostu nie jest dla mnie problemem w tej chwili ... Jeśli to się stanie, wrócę na dawną drogę ... Ale nie rozumiem, dlaczego 'eval()' nie działa? – Jimmyt1988

Odpowiedz

7

Nie ma, ale w PHP 7 będziesz mógł

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

Jako następujące RFC minęło:

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

EDIT:

Należy pamiętać, że zbyt wiele zastosowań w klasie może być oznaką "zapachu". Czy ta klasa nie robi zbyt wiele? Czy nie powinieneś tworzyć nowych klas "bazowych" i rozszerzać je?

+0

Dziękuję za to, zastanawiałem się, czy możesz wiedzieć, czy mogę to zrobić (eval) ... Wiem, że to okropne ... Ale jestem zdesperowany! I może się w pewnym momencie zmienić, jeśli to będzie noob! – Jimmyt1988

+0

Zbyt wiele zastosowań w klasie może być oznaką "zapachu". Czy ta klasa nie robi zbyt wiele? Czy nie powinieneś tworzyć nowych klas "bazowych" i rozszerzać je? –

+0

Jestem prawie pewien, że eval nie zadziała w tym przypadku, ponieważ zastosowania są przetwarzane przez kompilator. Jest to tylko wskazówka dla kompilatora, aby wiedzieć, gdzie znaleźć klasę, więc jeśli użyjesz jej z innego miejsca, nie będzie działać na twojej obecnej klasie. –