2015-04-29 3 views
5

Existe-t-il une solution pour inclure toutes les classes individuellement sous un espace de noms?Espace de noms d'utilisation PHP - Une solution pour inclure toutes les classes sous un espace de noms

Mes fichiers Laravel deviennent énormes parce que je dois continuer à inclure un grand nombre d'espaces de noms ... C'est vraiment horrible!

En tant que solution temporaire, pourquoi pourrait les éléments suivants ne pas fonctionner:

namespace.Blah.txt:

use Blah\Blah; 
use Blah\Bloh; 

code php:

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

Si je pouvais obtenir Pour que ça fonctionne, je pourrais évaluer le contenu d'un fichier ... Je comprends que c'est un peu noob ... mais ... bon sang!

+0

Comme dans autoload toutes les classes avec un espace de noms spécifique? –

+0

De combien de classes incluses parlons-nous? – Ravan

+0

J'ai environ 20 cours en ce moment. J'ai à peu près tous les inclure dans chaque contrôleur ... Je ne suis pas vraiment énervé à propos de la mémoire pour les classes car elles sont minuscules ... et elles ne sont jamais auto-instanciées donc ne seront jamais remplies. Ce n'est pas un problème pour moi en ce moment ... Si ça devient un, je vais revenir à l'ancienne ... Mais je ne comprends pas pourquoi le 'eval()' ne fonctionne pas? – Jimmyt1988

Répondre

7

Il n'y a pas, mais en PHP 7, vous serez en mesure de

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

Comme le RFC suivant est passé:

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

EDIT:

Notez que trop d'utilisations dans une classe peut être un signe d '«odeur». Ce cours particulier ne fait-il pas trop? Ne devriez-vous pas créer de nouvelles classes «de base» et les étendre?

+0

Merci pour cela, je me demandais si vous pourriez alors savoir si je peux faire ce qui précède (eval) ... Je sais que c'est horrible ... Mais je suis désespéré! Et il peut être changé à un moment donné s'il devient noob! – Jimmyt1988

+0

Trop d'utilisations dans une classe peut être un signe d '"odeur". Ce cours particulier ne fait-il pas trop? Ne devriez-vous pas créer de nouvelles classes «de base» et les étendre? –

+0

Je suis sûr que eval ne fonctionnera pas dans ce cas, car les utilisations sont traitées par le compilateur. C'est juste un indice pour le compilateur de savoir où trouver la classe, donc si vous exécutez l'utilisation d'ailleurs cela ne fonctionnera pas sur votre classe actuelle. –