찾다
Q&A ./foo/bar/utility/baz.php에 있는 Foo\Bar\Baz 클래스는 psr-4 자동 로딩 표준을 준수하지 않습니다. 줄넘기

0

Running Composer's updateinstallrequiredump-autoloadetc; 갑자기 노란색 지원 중단 알림을 받기 시작했습니다.

./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을 준비하려면 무엇이 필요합니까?

Your Answer
제출하다

2 답변
0

제 경우 이 오류는 어떤 이유로든 업그레이드된 위치 ./foo/bar/baz.php에 나타나는 ./foo/bar/utility/baz.php 파일의 복사본으로 인해 발생했습니다. 후자를 제거한 후 오해의 소지가 있는 오류가 사라졌습니다. 소문자/대문자 경로 이름을 쳐다보는 데 몇 시간을 보냈지만 처음에는 파일에 문제가 없었습니다.

2023-10-27 14:50:27

제출하다

0

이는 다양한 이유로 발생할 수 있습니다.

오류 메시지에 주의를 기울이는 것이 중요합니다. 문제의 원인을 정확히 찾아내는 데에는 일반적으로 매우 정확합니다.

경로 사례

가장 일반적인 원인은 오류 메시지에서 알 수 있듯이 Bar.php경로 이름의 다양한 구성 요소의 대소문자가 정규화된 클래스 이름의 대소문자와 일치하지 않는다는 것입니다.

일치하지 않습니다. foo/bar/Baz.phpAppBarBaz

각 경로 구성 요소가 소유한 네임스페이스의 대소문자와 일치하도록 애플리케이션이나 패키지를 업데이트하세요.

으아아아

파일명과 클래스명 또는 네임스페이스 차이

네임스페이스와 경로명을 매우 주의 깊게 확인하세요. 때로는 클래스(또는 네임스페이스)에 이름을 지정하지만

디스크의 경로는 "foo-bar"입니다. 또는 어떤 이유로든 네임스페이스가 파일의 경로 이름과 정확히 일치하지 않는 경우도 있습니다. FooBar

이렇게 하면 알림/경고도 실행됩니다. 파일 이름을 바꾸거나 클래스(또는 네임스페이스)의 이름을 바꿔야 합니다.

일반적으로 경로나 파일을 변경하는 것이 훨씬 쉽습니다. 클래스나 네임스페이스 이름을 변경하려면 새 이름과 일치하도록 코드를 리팩터링해야 하지만 경로를 변경하면 리팩터링이 필요하지 않기 때문입니다.

중첩된 네임스페이스 및 누락된 선언

다음이 있다고 가정해 보세요:

으아아아

그리고

src/Buzz 내부에 정의된 Dummy 클래스: Dummy,在内部定义src/Buzz 으아아아

위 방법은 작동하지만 다른 방법처럼 알림을 표시합니다. 올바른 접근 방식은 다음과 같습니다.

으아아아

영향을 받는 클래스뿐만 아니라 이 클래스를 사용하거나 가져오는 다른 모든 파일도 변경해야 합니다. (예를 들어 이제

을 선언합니다.) use FizzBuzzBuzzDummy;

2023-10-27 12:42:14

제출하다

Hot Tools

vc9-vc14(32+64비트) 런타임 라이브러리 모음(아래 링크)

vc9-vc14(32+64비트) 런타임 라이브러리 모음(아래 링크)

phpStudy 설치에 필요한 런타임 라이브러리 모음을 다운로드하세요.

VC9 32비트

VC9 32비트

VC9 32비트 phpstudy 통합 설치 환경 런타임 라이브러리

PHP 프로그래머 도구 상자 정식 버전

PHP 프로그래머 도구 상자 정식 버전

Programmer Toolbox v1.0 PHP 통합 환경

VC11 32비트

VC11 32비트

VC11 32비트 phpstudy 통합 설치 환경 런타임 라이브러리

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.