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을 준비하려면 무엇이 필요합니까?
제 경우 이 오류는 어떤 이유로든 업그레이드된 위치 ./foo/bar/baz.php에 나타나는 ./foo/bar/utility/baz.php 파일의 복사본으로 인해 발생했습니다. 후자를 제거한 후 오해의 소지가 있는 오류가 사라졌습니다. 소문자/대문자 경로 이름을 쳐다보는 데 몇 시간을 보냈지만 처음에는 파일에 문제가 없었습니다.
이는 다양한 이유로 발생할 수 있습니다.
오류 메시지에 주의를 기울이는 것이 중요합니다. 문제의 원인을 정확히 찾아내는 데에는 일반적으로 매우 정확합니다.
경로 사례
가장 일반적인 원인은 오류 메시지에서 알 수 있듯이
Bar.php
경로 이름의 다양한 구성 요소의 대소문자가 정규화된 클래스 이름의 대소문자와 일치하지 않는다는 것입니다.일치하지 않습니다.
각 경로 구성 요소가 소유한 네임스페이스의 대소문자와 일치하도록 애플리케이션이나 패키지를 업데이트하세요.foo/bar/Baz.php
与AppBarBaz
으아아아
파일명과 클래스명 또는 네임스페이스 차이디스크의 경로는 "foo-bar"입니다. 또는 어떤 이유로든 네임스페이스가 파일의 경로 이름과 정확히 일치하지 않는 경우도 있습니다.
이렇게 하면 알림/경고도 실행됩니다. 파일 이름을 바꾸거나 클래스(또는 네임스페이스)의 이름을 바꿔야 합니다.FooBar
으아아아
그리고
위 방법은 작동하지만 다른 방법처럼 알림을 표시합니다. 올바른 접근 방식은 다음과 같습니다.src/Buzz
내부에 정의된Dummy
클래스:Dummy
,在内部定义src/Buzz
으아아아으아아아
영향을 받는 클래스뿐만 아니라 이 클래스를 사용하거나 가져오는 다른 모든 파일도 변경해야 합니다. (예를 들어 이제을 선언합니다.)
use FizzBuzzBuzzDummy;