Running Composer's update
、install
、require
、dump-autoload
etc; 갑자기 노란색 지원 중단 알림을 받기 시작했습니다.
./foo/bar/utility/baz.php에 있는 FooBarBaz 클래스는 psr-4 자동 로딩 표준을 준수하지 않습니다. 뛰어 넘다.
Composer 2.0 이전에는 일반적으로 다음을 얻을 수 있었습니다.
지원 중단 알림: ./foo/bar/Baz.php에 있는 FooBarBaz 클래스는 psr-4 자동 로딩 표준을 준수하지 않습니다. Composer v2.0에서는 자동 로딩을 더 이상 사용할 수 없습니다. phar:///usr/local/bin/composer/src/Composer/Autoload/ClassMapGenerator.php:201
에서
이 알림이나 경고가 나타나는 이유는 무엇입니까? 이 상황에서 벗어나 Composer 2.0을 준비하려면 무엇이 필요합니까?
P粉5877801032023-10-27 14:50:27
제 경우 이 오류는 어떤 이유로든 업그레이드된 위치 ./foo/bar/baz.php에 나타나는 ./foo/bar/utility/baz.php 파일의 복사본으로 인해 발생했습니다. 후자를 제거한 후 오해의 소지가 있는 오류가 사라졌습니다. 소문자/대문자 경로 이름을 쳐다보는 데 몇 시간을 보냈지만 처음에는 파일에 문제가 없었습니다.
P粉9596764102023-10-27 12:42:14
이는 다양한 이유로 발생할 수 있습니다.
오류 메시지에 주의를 기울이는 것이 중요합니다. 문제의 원인을 정확히 찾아내는 데에는 일반적으로 매우 정확합니다.
가장 일반적인 원인은 오류 메시지에서 알 수 있듯이 Bar.php
경로 이름의 다양한 구성 요소의 대소문자가 정규화된 클래스 이름의 대소문자와 일치하지 않는다는 것입니다.
일치하지 않습니다. foo/bar/Baz.php
与 AppBarBaz
으아아아
파일명과 클래스명 또는 네임스페이스 차이 디스크의 경로는 "foo-bar"입니다. 또는 어떤 이유로든 네임스페이스가 파일의 경로 이름과 정확히 일치하지 않는 경우도 있습니다. FooBar
일반적으로 경로나 파일을 변경하는 것이 훨씬 쉽습니다. 클래스나 네임스페이스 이름을 변경하려면 새 이름과 일치하도록 코드를 리팩터링해야 하지만 경로를 변경하면 리팩터링이 필요하지 않기 때문입니다.
중첩된 네임스페이스 및 누락된 선언
으아아아
그리고src/Buzz
내부에 정의된 Dummy
클래스: Dummy
,在内部定义src/Buzz
으아아아
으아아아
영향을 받는 클래스뿐만 아니라 이 클래스를 사용하거나 가져오는 다른 모든 파일도 변경해야 합니다. (예를 들어 이제을 선언합니다.) use FizzBuzzBuzzDummy;