Exécution de composer's update
、install
、require
、dump-autoload
etc ; j'ai soudainement commencé à recevoir des notifications de dépréciation jaunes qui disaient :
La classe FooBarBaz située dans ./foo/bar/utility/baz.php n'est pas conforme aux normes de chargement automatique psr-4. franchir.
Avant Composer 2.0, vous obteniez généralement :
Avis de dépréciation : la classe FooBarBaz située dans ./foo/bar/Baz.php n'est pas conforme aux normes de chargement automatique psr-4. Le chargement automatique ne sera plus disponible dans Composer v2.0. sur phar:///usr/local/bin/composer/src/Composer/Autoload/ClassMapGenerator.php:201
Pourquoi est-ce que je reçois cette notification ou cet avertissement ? De quoi ai-je besoin pour en sortir et être prêt pour Composer 2.0 ?
Dans mon cas, cette erreur a été causée par une copie du fichier ./foo/bar/utility/baz.php apparaissant à l'emplacement mis à niveau ./foo/bar/baz.php pour une raison quelconque. Après avoir supprimé cette dernière, l’erreur trompeuse a disparu. Même si j'ai passé plusieurs heures à regarder des chemins d'accès en petites/majuscules, je n'ai initialement eu aucun problème avec le fichier.
Cela peut arriver pour diverses raisons.
Il est important de prêter attention au message d'erreur , il est généralement très précis pour identifier la source du problème.
Cas de chemin
La cause la plus courante est, comme l'indique le message d'erreur,
Bar.php
La casse des différents composants du nom de chemin ne correspond pas à la casse du nom de classe complet ;Aucune correspondance.
Mettez simplement à jour votre application ou package afin que chaque composant de chemin corresponde à la casse de l'espace de noms qu'il possède :foo/bar/Baz.php
与AppBarBaz
mais son chemin sur le disque est "foo-bar", par exemple. Ou simplement que, pour une raison quelconque, votre espace de noms ne correspond pas exactement au chemin d'accès du fichier.
Cela déclenchera également des notifications/avertissements. Vous devez renommer le fichier ou renommer la classe (ou l'espace de noms).FooBar
Dummy
, définie dans
La méthode ci-dessus fonctionnera, mais enverra des notifications comme les autres méthodes. La bonne approche est :src/Buzz
:Dummy
,在内部定义src/Buzz
).
use FizzBuzzBuzzDummy;