"일꾼이 일을 잘하려면 먼저 도구를 갈고 닦아야 한다." - 공자, 『논어』.
첫 장 > 프로그램 작성 > PHP의 PSR 자동 로딩 표준에 대한 자세한 설명

PHP의 PSR 자동 로딩 표준에 대한 자세한 설명

2025-04-29에 게시되었습니다
검색:720

PSR-Autoloading Standard in PHP

ahnii!

php의 설명서 dearly days를 기억하십니까? 지난주에 팀이 레거시 앱을 업그레이드하는 데 도움을주었습니다. 50 개 이상의 파일 당 명령문이 필요합니다! PSR-4 자동로드 가이 문제를 해결하는 방법을 살펴 보겠습니다.

PSR-4 이해 (5 분)

PSR-4는 코드의 자동 파일 로케이터입니다. 주소를 사용하는 GPS와 마찬가지로 PSR-4는 네임 스페이스를 사용하여 클래스를 찾습니다.

주요 개념 (2 분)

  1. 완전히 자격을 갖춘 클래스 이름 (fqcn) : vendor \ package \ class . 수업의 완전한 주소로 생각하십시오.
  2. 디렉토리 구조 : 네임 스페이스-디렉토리 매핑이있는 잘 조직 된 프로젝트 디렉토리.
실제 예제 (10 분)

프로젝트 구조 :

vendor/
└── jonesrussell/
    └── blog/
        ├── composer.json
        └── src/
            └── Post/
                ├── PostController.php
                └── PostRepository.php
작곡가 설정 (3 분)

composer.json :

{
    "name": "jonesrussell/blog",
    "autoload": {
        "psr-4": {
            "JonesRussell\\Blog\\": "src/"
        }
    }
}
클래스 생성 (2 분)

postcontroller.php :

 'Ready to blog!'];
    }
}

일반적인 패턴 (5 분)

다중 네임 스페이스 루트 :

{
    "autoload": {
        "psr-4": {
            "JonesRussell\\Blog\\": "src/",
            "JonesRussell\\Blog\\Tests\\": "tests/"
        }
    }
}

중첩 네임 스페이스 : (파일 위치 : src/core/database/connection.php )

config = $config;
    }
}

프레임 워크 예제 (5 분)

Laravel과 Symfony는 기본적으로 PSR-4를 사용합니다.

laravel 예 :

Symfony 예 :

render('blog/index.html.twig');
    }
}

문제 해결 (3 분)

  • "Class found"오류 : run Composer Dump-Autoload .
  • 디렉토리 구조 문제 : 디렉토리 구조가 네임 스페이스와 일치하는지 확인하십시오 (Case-ensenitive!).

테스트 (2 분)

Create test-autoload.php :

index()); // Should output "Ready to blog!"

다음 단계

다음으로, 우리는 PSR-6 (캐싱)을 다룹니다. 이것은 PSR 표준 시리즈의 일부입니다.

자원

  • 공식 PSR-4 사양
  • Composer Autoloading Documentation
  • 시리즈 예제 저장소 (v0.3.0 -PSR -4 구현)
최신 튜토리얼 더>

부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.

Copyright© 2022 湘ICP备2022001581号-3