Problème avec composer lors d'ajout de fichiers

a marqué ce sujet comme résolu.

Bonjour, j'ai un problème avec Composer, je viens donc demander de l'aide SVP.

Avec un projet (sur lequel on travail à 2), nous sommes obligé de faire un "php composer.phar dump-autoload" et un "php composer.phar dump-autoload -o" à chaque fois qu'on ajoute un nouveau fichier (une nouvelle Classe dans notre projet web). si on ne tape pas ces lignes de commandes, l'autoloader de composer nous dit que cette classe est not found…

Alors qu'avec des projets perso, je n'ai jamais été dans l'obligation de taper ces lignes de commandes à chaque création de nouvelle Classe.

Pourtant dans mon composer.json j'ai bien mis ceci :

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
"autoload": {
    "psr-4" : {
        "App\\": "app/",
        "Database\\": "app/",
        "Helpers\\": "app/",
        "": [
            "app/",
            "lib/"
        ]
    }
},

ps : j'ai des classes sans Namespace dans mes répertoires "app" et "lib".

Donc je ne comprend pas pour à chaque fois qu'on ajoute un fichier dans le dossier "app", il faut qu'on fasse "php composer.phar dump-autoload" et "php composer.phar dump-autoload -o"…

Aurez-vous une idée d'où ça pourrais venir SVP ?

Merci d'avance.

+0 -0

Salut,

Et si tu ne fais qu'un composer dump-autoload ? -o optimise l'autoloader en modifiant son comportement : sans, l'autoloader cherche dans les dossiers à chaque exécution, mais en optimisant il ne fait pas ça et il écrit les fichiers à accéder.
Vu que tu overwrite l'autoloader de dev avec celui optimisé, ton autoloader ne va pas chercher les nouveaux fichiers que tu ajoutes.

Ok, je vais essayer de donner un peu + de détails.

Du coup, dans le répertoire "lib" il ni a aucun fichier PHP que l'application utilise. On viens de m'expliquer que c'est des vieux script.

Donc mon composer.json, devient moins complexe :

1
2
3
4
5
"autoload": {
    "psr-4" : {
        "": "app/"
    }
},

Ensuite j'ai créé une classe pour tester. Et visiblement composer ne me trouve pas la nouvelle Classe. PHP me renvoi cette erreur :

Fatal error: Class 'App\Model\AaaTest' not found in ....

Je suis encore obligé de faire un "php composer.phar dump-autoload" et un "php composer.phar dump-autoload -o" pour que ça fonctionne…

Dans mon répertoire "app" il y a toutes les Classes (controllers, models, helpers…) de l'application, avec et sans Namespace.

Mais dans le projet que je récupère, tout ne doit pas être aux normes PSR-4 (il y a beaucoup de Classes qui commencent par des minuscule par exemple…), donc ça viens peut etre du code, et non de composer.

Dans l'autoload de composer, j'ai essayé de mettre PSR-0 au lieu de PSR-4, ça ne change rien.

Merci.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte