web-dev-qa-db-fra.com

Laravel / Composer: l'instruction use avec un nom non composé

Dans mon projet laravel j'ai créé un modèle appelé CustomerLinks. Le modèle réside dans le app/models dossier. Mon fichier composer a un chargement automatique de:

"autoload": {
    "classmap": [
        ...
        "app/models",
        ...

    ],
    ...
},

Et j'ai une instruction use dans mon ExtendedUserController qui fait référence à CustomerLinks:

<?php

...
use CustomerLinks;
...

class ExtendedUserController extends UserController {

Je crois comprendre que puisque la propriété de chargement automatique dans le fichier composer a des applications/modèles dans le classmap, cela signifie que je devrais pouvoir utiliser use CustomerLinks sans préfixe d'espace de noms.

Cela fonctionne, mais chaque fois que je modifie mon ExtendedUserControler et recharge mon navigateur, j'obtiens l'erreur:

The use statement with non-compound name 'CustomerLinks' has no effect

L'erreur pointe vers le use CustomerLinks contrôleur utilisateur étendu de ligne.

Quand je fais un composer dump-autoload tout fonctionne bien, mais cela devient extrêmement irritant quand je dois suivre le schéma

faire un changement -> vider le chargement automatique -> rafraîchir le navigateur -> répéter

Existe-t-il un moyen de traiter l'erreur?

18
Chris Schmitz

Si vous n'êtes pas dans un espace de noms (c'est-à-dire que vous êtes dans l'espace de noms racine) et que la classe que vous souhaitez utiliser n'est pas non plus dans un espace de noms (c'est-à-dire aussi dans l'espace de noms racine), alors l'utilisation de use n'a aucun sens , car le code fonctionnera de la même manière sans lui. Vous n'importez rien avec cette instruction.

Composer n'a rien à voir avec cela, ni aucun autre chargement automatique. C'est ainsi que PHP fonctionne de lui-même.

29
Sven