Problème avec composer lors d'ajout de fichiers

L'auteur de ce sujet a trouvé une solution à son problème.
Auteur du sujet

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.

Édité par stephweb

+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.

It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical? – Perlis

+0 -0

Sans plus de détails, je ne peux pas t'aider. Je pense que ça viens du code et non de composer.

It goes against the grain of modern education to teach children to program. What fun is there in making plans, acquiring discipline in organizing thoughts, devoting attention to detail and learning to be self-critical? – Perlis

+0 -0
Auteur du sujet

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.

Édité par stephweb

+0 -0
Vous devez être connecté pour pouvoir poster un message.
Connexion

Pas encore inscrit ?

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