Composer classmap autoload ne charge pas les nouveaux fichiers dans le dossier
Le problème suivant: j'ai défini un classmap dans mon compositeur.json:
"autoload": {
"classmap": [
"app/controllers",
"app/models",
"app/helper.php"
]
}
Cependant, lorsque je crée un nouveau fichier dans le "contrôleurs" ou des "modèles" du dossier, il ne se charge pas et je dois toujours faire un compositeur de vidage-autoload.
Est-ce le bon comportement? Je pensais que l'autochargeur de compositeur surveille les dossiers pour les nouveaux fichiers?
source d'informationauteur pyxl
Vous devez vous connecter pour publier un commentaire.
Oui, c'est le comportement correct. Si vous voulez de nouvelles classes à charger automatiquement, vous devez utiliser le PSR-0 ou PSR-4 autochargement.
La génération de la classmap nécessite Compositeur de savoir le nom de fichier qui contient une certaine classe. Ceci ne peut être fait par l'analyse de l'ensemble du code source dans le répertoire et de numérisation pour les classes, les interfaces et la définition de caractère.
C'est généralement un CPU et I/O intensive de la tâche, de sorte qu'il est fait uniquement lorsque le Compositeur n'installer/mettre à jour ou (sur demande) vidages de l'autochargeur, il n'est pas fait avec tous les
require "vendor/autoload.php";
.Noter que le classmap le chargement automatique est simplement là pour les vieux héritage des bases de codes qui ne l'a pas mise en œuvre d'au moins PSR-0. Il n'est pas prévu pour le nouveau code - sauf si vous voulez payer le prix pour le vidage de l'autochargeur encore et encore au cours du développement.
Aller à la racine de votre serveur en SSH. Maintenant, procédez de la manière suivante:
ls
à la liste de tous les fichiers.composer.lock
fichier; supprimer le fichier avec l'rm composer.lock
commande.php composer update
de commande.En fonction de votre type linux vous pouvez exécuter
php-cli composer update
.De l'étape 3 créez un nouveau
composer.lock
fichier et de toutes vos classes sera de nouveau chargé. Le faire à tout moment vous ajouter de nouvelles classes.ou:
composer dump-autoload
commande.Puedes leer este post, justo estaba buscando lo mismo que vos y logre encontrar la respuesta en este post:
http://phpenthusiast.com/blog/how-to-autoload-with-composer
Vous pouvez lire ce post, je viens de regarder pour la même chose que vous et a réussi à trouver la réponse dans ce post:
http://phpenthusiast.com/blog/how-to-autoload-with-composer