Maison >développement back-end >tutoriel php >Pourquoi Composer émet-il des avertissements de dépréciation du chargement automatique PSR-4 concernant les incohérences de chemin de classe ?

Pourquoi Composer émet-il des avertissements de dépréciation du chargement automatique PSR-4 concernant les incohérences de chemin de classe ?

Patricia Arquette
Patricia Arquetteoriginal
2024-11-29 00:58:10473parcourir

Why is Composer issuing PSR-4 autoloading deprecation warnings about class path mismatches?

Dépréciation du chargement automatique de Composer PSR-4 : incompatibilité de chemin de classe

Lors de l'exécution de commandes composer telles que update et install, vous pouvez rencontrer un avis de dépréciation concernant une classe qui n'est pas conforme à la norme de chargement automatique PSR-4. Cela se produit généralement lorsqu'il existe une différence entre les classes. nom complet et le chemin de son fichier correspondant.

Cas du chemin

La cause la plus courante est une incompatibilité dans le cas des composants du chemin d'accès et du nom de la classe. Par exemple, "foo/bar/Baz.php" ne correspond pas à "FooBarBaz". Assurez-vous que la casse de chaque composant de chemin d'accès correspond à la casse de l'espace de noms qu'il représente, par exemple. "Foo/Bar/Baz.php" pour "FooBarBaz". Parfois, votre classe (ou espace de noms) peut s'appeler FooBar, mais son chemin d'accès au disque est "foo-bar". Cette situation déclenche également un avertissement. Vous devez renommer le fichier ou la classe (ou l'espace de noms).

Souvent, changer un chemin ou un fichier est plus facile que changer le nom d'une classe ou d'un espace de noms, car changer le nom d'une classe ou d'un espace de noms nécessite de refactoriser votre code pour qu'il corresponde au nouveau nom, alors que changer un chemin ne nécessite rien de refactoriser. contenu.

Espaces de noms imbriqués et déclarations manquantes

Supposons que vous ayez :

et que la classe Dummy soit définie dans src/Buzz :

Le code ci-dessus fonctionne bien mais lancera des avertissements similaires à d'autres situations. L'approche correcte devrait être :

"autoload": {
    "psr-4": {
        "Fizz\Buzz\": "src/"
    }
}

Vous devez apporter des modifications non seulement à la classe affectée, mais également à tout autre fichier qui utilise ou importe cette classe (par exemple, en déclarant maintenant utiliser FizzBuzzBuzzDummy ;) .

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn