찾다

 >  Q&A  >  본문

Composer 자동 로딩에서 이 클래스를 찾을 수 없습니다.

다음과 같은 구조의 프로젝트가 있습니다:

으아악

이것은 작곡가.json에서 psr-4 자동 로딩을 정의하는 방법입니다:

으아악

이것은 내 Guitar.php입니다:

으아악

이것은 내 ToString.php입니다:

으아악

이것은 내 Type.php입니다:

으아악

이것은 내 GuitarTest.php입니다:

으아악

하지만 테스트를 실행하면 다음 오류가 발생합니다.

으아악

무엇이 문제인가요? 어떻게 해결하나요?

P粉403804844P粉403804844243일 전421

모든 응답(1)나는 대답할 것이다

  • P粉764836448

    P粉7648364482024-03-27 12:15:40

    이것은 PSR-4 구성의 Composer 자동 로더에 관한 질문입니다.

    • composer.json 구성이 합법적인 것 같습니다.
    • require_once 통화는 되지 않습니다. 이는 자동 로더이며 클래스 파일에는 자동 로더가 필요하지 않습니다.

    의심스러운 경우 자동 로더 구성을 테스트해 보세요.

    다음 단계:

    1. 해당 require_once 전화를 제거하세요. 전화는 주의를 산만하게 하고 문제 해결을 방해할 뿐입니다. 자동 로드 구성이 유효하거나 유효하지 않습니다. 포함 지점을 다른 파일에 분산시키는 경우 더 많은 유지 관리가 필요하지만 반드시 그렇게 할 필요는 없습니다.

    2. 문제가 있으므로 测试모듈을 재구성하여 자동 로더 구성 테스트를 도입하세요.

      1. tests 移至 tests/unit에서 콘텐츠를 이동하고 단위 테스트를 위한 전용 디렉터리를 제공합니다.

      2. 생성됨 tests/php 子文件夹并在其中创建 autoloading.php 文件。该文件夹用于 PHP 测试,即直接使用 PHP 执行它们(例如 phptests/php/autoloading.php). 파일 내용:

        으아악

        참조:

    3. 자동 로더 구성 테스트를 실행하여 파일을 로드할 수 있는지 확인하세요

      으아악

    (아무것도 인쇄할 수 없지만 무엇이든 인쇄할 수 있습니다. 중요한 것은 파일을 찾을 수 없거나 유사한 유형의 오류가 아닌 실행된다는 것입니다.

    이 방법으로 PHP 파일을 실행할 수 있다면 이를 Composer 구성에 바인딩하세요. 이를 통해 오토로더 구성을 테스트할 수 있습니다.

    새 스크립트를 composer.json 구성에 추가하세요:

    으아악

    참조:

    테스트해 보세요:

    으아악

    (출력되지 않습니다. 여기에 어떻게 보이는지 보여주기 위해 몇 가지 경고를 추가했습니다)

    이렇게 하면 새로운 자동 로드 구성 테스트가 실행되고 경고 모드에서 어설션이 활성화됩니다. 즉, ***_exists() 함수가 false를 반환하면 오류가 표시됩니다. 이는 인터페이스/열거/클래스를 로드할 수 없음을 의미합니다.

    발견되지 않은 예외의 경우 -dassert.exception=0 更改为 -dassert.exception=1 (0 -> <代码>1)。然后测试将以非零代码退出(状态 255를 통과할 수 있습니다.

    이것이 당신이 원하는 것입니다 -dassert.exception=0 更改为 -dassert.exception=1 并再次保存 composer.json .

    그런 다음 오토로더를 덤프하는 Composer 명령을 사용하여 오토로더를 테스트할 수 있습니다.

    • 作曲家转储自动加载
    • 作曲家安装
    • 作曲家更新

    즐거운 테스트 되세요.


    적절한 테스트, phpunit이 아직 실행 중인지 확인할 수도 있습니다:

    으아아아

    다시 테스트해 보세요. 범인을 찾아 모든 것이 정상으로 돌아오면 단일 작성기 스크립트를 사용하여 모든 테스트를 실행할 수 있습니다.

    Common은 test:

    라는 단어가 포함된 스크립트입니다. 으아아아

    글을 쓸 필요도 없고 composer run-script test,只需 composer test항상 그것만으로도 충분합니다:

    으아아아

    (이 예제 출력에서는 phpunit 테스트를 구성하지 않았지만 이해가 되실 겁니다)


    그럼 이건 어떤 테스트인가요? 글쎄요, 저는 이것을 구성 테스트라고 부릅니다. 이것은 단지 몇 가지 PHP 내용을 확인할 수 있는 간단한 확인일 뿐입니다. 그러한 테스트를 많이 추가하지 말고 테스트 계획을 작게 유지하십시오. 이를 사용하여 프로젝트를 구성할 때 직면하는 문제를 해결할 수 있습니다. 최대 1년 동안 보관하고 오류가 없다면 삭제를 고려해 보세요.

    그러나 이 예에서는 일부 수표를 구성된 위치에 더 가깝게 이동하고 함께 묶는 방법을 보여줍니다. 종료 상태가 0이 아닌 경우 Composer는 전체 프로세스를 실패하게 됩니다.

    또한 메시지가 표시되도록 각 작성자 스크립트에 설명을 추가할 수 있습니다.

    으아아아 으아아아

    (참조: 사용자 정의 설명 - 작성기 스크립트 문서 )

    회신하다
    0
  • 취소회신하다