Heim >Backend-Entwicklung >PHP-Tutorial >Warum gibt Composer Warnungen zum Verfall des automatischen Ladens von PSR-4 wegen nicht übereinstimmender Klassenpfade aus?

Warum gibt Composer Warnungen zum Verfall des automatischen Ladens von PSR-4 wegen nicht übereinstimmender Klassenpfade aus?

Patricia Arquette
Patricia ArquetteOriginal
2024-11-29 00:58:10519Durchsuche

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

Veraltung des automatischen Ladens von Composer PSR-4: Nichtübereinstimmung des Klassenpfads

Beim Ausführen von Composer-Befehlen wie „Update“ und „Install“ wird möglicherweise ein Veraltungshinweis angezeigt eine Klasse, die nicht dem PSR-4-Autoloading-Standard entspricht. Dies tritt normalerweise auf, wenn eine Diskrepanz zwischen den Klassen besteht vollständig qualifizierter Name und der Pfad der entsprechenden Datei.

Pfadfall

Die häufigste Ursache ist eine Nichtübereinstimmung zwischen den Pfadnamenkomponenten und dem Klassennamen. Beispielsweise entspricht „foo/bar/Baz.php“ nicht „FooBarBaz“. Stellen Sie sicher, dass die Groß-/Kleinschreibung jeder Pfadnamenkomponente mit der Groß-/Kleinschreibung des von ihr repräsentierten Namespace übereinstimmt, z „Foo/Bar/Baz.php“ für „FooBarBaz“-Bedingung. Manchmal heißt Ihre Klasse (oder Ihr Namespace) möglicherweise FooBar, aber ihr Festplattenpfad ist „foo-bar“. Auch diese Situation löst eine Warnung aus. Sie müssen die Datei oder Klasse (oder den Namespace) umbenennen.

Oft ist das Ändern eines Pfads oder einer Datei einfacher als das Ändern eines Klassen- oder Namespace-Namens, da das Ändern eines Klassen- oder Namespace-Namens eine Umgestaltung Ihres Codes erfordert, damit dieser mit dem neuen Namen übereinstimmt, während das Ändern eines Pfads keine Umgestaltung erfordert Inhalt.

Verschachtelte Namespaces und fehlende Deklarationen

Angenommen, Sie haben:

und die Klasse Dummy ist in src/Buzz definiert:

Der obige Code funktioniert einwandfrei, löst jedoch ähnliche Warnungen wie in anderen Situationen aus. Der richtige Ansatz sollte sein:

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

Sie müssen nicht nur Änderungen an der betroffenen Klasse vornehmen, sondern auch an allen anderen Dateien, die diese Klasse verwenden oder importieren (z. B. indem Sie jetzt die Verwendung von FizzBuzzBuzzDummy deklarieren;) .

Das obige ist der detaillierte Inhalt vonWarum gibt Composer Warnungen zum Verfall des automatischen Ladens von PSR-4 wegen nicht übereinstimmender Klassenpfade aus?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn