키 테이크 아웃
PSR-0 및 PSR-4는 PHP의 자동 로딩 표준이며, PSR-0은 클래스의 네임 스페이스를 기반으로 경로를 정의하고 클래스 이름의 밑줄을 허용하는 반면, PSR-4는 폴더 구조를 단순화하고 PSR의 잔해를 제거하는 것을 목표로합니다. 0.
패키지 지향 자동 로딩이라고하는 PSR-4는 클리너 패키지를 허용하지만 구현하기가 더 복잡합니다. 또한 자동 로더가 예외를 던지거나 오류를 제기해서는 안되며 여러 자동 로더와의 호환성을 유지하지 않아야합니다.
PSR-0과 PSR-4는 모두 장단점을 가지고 있습니다. PSR-4는 더 간단한 폴더 구조를 허용하지만 완전히 자격있는 이름의 클래스의 정확한 경로를 표시하지는 않지만 PSR-0은 혼란 스럽지만 혼란 스럽지만 혼란 스러울 수 있습니다. 구형 명명 규칙을 사용하는 개발자를 지원하고 이름에서 수업을 찾는 데 도움이됩니다.
PHP 교육의 초보자 단계를 지나면 PSR-0에 대해 들었습니다. PSR-0에 대해 들었습니다. 즉, 요구 및 포함과 같은 문장을 사용하지 않고도 코드에 PHP 클래스를 자동으로 포함시키는 방법을 정의하는 자동로드 표준입니다.
PSR-0이 클래스 이름의 어느 부분 사이에 중보 경로를 허용하지 않기 때문에.
이것은 매우 중요합니다. 이는 PSR-4를 구현하는 것이 더 깨끗한 패키지를 허용하는 것이 훨씬 더 복잡하다는 것을 의미합니다. PSR-4 패키지 지향 자동 로딩을 호출합니다. 단순성 전에 패키지 청결을 선호하기 때문입니다.
선택한 접근 방식
제안 된 목표는 다음과 같습니다. PSR-0 규칙을 유지하여 모든 패키지가 최소한 두 개의 네임 스페이스 레벨 (공급 업체 및 패키지)을 포함해야한다는 것을 유지하고 공급 업체 패키지 콤보가 모든 폴더에 매핑 할 수 있는지 확인하고 디스 픽스를 허용하십시오. 공급 업체 패키지 콤보와 완전히 자격을 갖춘 클래스 이름 사이의 폴더.
이것은 우리가 패키지 코드에 어디서나 인간으로서 우리에게 의미가있는 곳 어디서나 수업을 대체 하중 기술을 작성하거나 수동 로딩에 의지하지 않고도 PHP에 여전히 원활하게 사용할 수 있음을 의미합니다.
또한, 초안은 PSR-4 자동 로더가 여러 오토 로더가 등록 될 수 있기 때문에 단순히 예외를 제외하지 않거나 오류를 제기해서는 안되며, 클래스를로드하지 못하면 다른 사람들이 그렇게 할 기회를 주어야한다는 명시 적으로 명시 적으로 명시 적으로 명시되어 있습니다. 오류와 흐름을 중지하면이 호환성이 나됩니다. 실패에 대한 추가 정보가 필요한 경우 PSR-3 호환 로거 또는 기타 임의 수단을 사용해야합니다.
예제 파일에 표시된대로 PSR-4 자동 로더를 사용하여 다음 구조에서 클래스를로드합니다.
는 다음과 같이 보일 것입니다
새로운 foobarquxquux를 호출하는 곳; 새로운 foobarquxquuxtest 인 첫 번째 등록 디렉토리에서로드하려고 시도합니다. 두 번째로부터로드하려고 시도 할 것이다.
이 예제는 단일 네임 스페이스 당 여러 폴더의 사용을 보여줍니다.
결론
자동 로딩에는 은색 총알이 없습니다. 각 접근 방식은 그 자체로 몇 가지 장단점을 제공합니다-PSR-4는 더 간단한 폴더 구조를 허용하지만, 완전히 자격을 갖춘 이름을 보면 클래스의 정확한 경로를 알지 못하게합니다. 반면에 PSR-0은 하드 드라이브에서 혼란 스럽지만 과거에 갇혀있는 개발자 (밑줄이없는 사용자)를 지원하고 이름을 보면서 수업의 위치를 분별하는 데 도움이됩니다.
PSR-4에 대해 어떻게 생각하십니까? 아래 의견에 알려 주시거나 많은 토론 중 하나에서 귀하의 의견을 표현하십시오.
어느 쪽이든-패키지 지향 자동 로딩이 여기에 있다는 것은 의심의 여지가 없습니다. 공식적으로 표준으로 받아 들여지지 않으면 필요한 사람들이 사용자 정의를 구현합니다. 토론에 참여 하고이 공식적인 상태에 도달 할만 큼 충분히 개념을 개선하는 것은 우리에게 달려 있습니다. PSR-0 및 PSR-4 AUTOLOading에 대한 질문 에 대한 자주 묻는 질문입니다
PSR-0과 PSR-4의 주요 차이점은 무엇입니까? PSR-0과 PSR-4의 주요 차이점은 네임 스페이스와 디렉토리 구조를 처리하는 방식에 있습니다. PSR-0은 네임 스페이스와 디렉토리 구조 사이의 직접적인 상관 관계가 필요합니다. 즉, 네임 스페이스의 각 밑줄이 디렉토리 분리기에 해당합니다. 반면, PSR-4는 네임 스페이스의 일부를 디렉토리에 매핑 할 수 있고 나머지 네임 스페이스를 하위 디렉토리 구조에 매핑 할 수있는보다 유연한 접근 방식을 허용합니다. PSR-4가 이미 제자리에있을 때 도입 된 PSR-4는 PSR-0의 일부 한계를 극복하기 위해 도입되었다. PSR-0의 네임 스페이스와 디렉토리 구조 사이의 엄격한 상관 관계는 깊게 중첩 된 디렉토리로 이어졌으며, 이는 항상 실용적이거나 효율적이지 않았습니다. PSR-4는보다 유연한 접근 방식을 제공하여 개발자가 네임 스페이스를 디렉토리에 매핑 할 수 있도록하여 딥 디렉토리 중첩의 필요성을 줄입니다.
동일한 프로젝트에서 PSR-0과 PSR-4를 모두 사용할 수 있습니까? 예, 같은 프로젝트에서 PSR-0과 PSR-4를 모두 사용할 수 있습니다. 그러나 동일한 클래스를 자동로드하는 데 사용해서는 안된다는 점에 유의해야합니다. 두 표준을 사용하면 일부 레거시 코드가 PSR-0 표준을 따르는 대규모 프로젝트에서는 유익 할 수 있으며, 새로운 코드는 PSR-4 표준을 따릅니다. PSR-4가 PSR-0에서 어떻게 개선됩니까?
. PSR-4는 자동 로딩에 대한보다 유연한 접근 방식을 제공함으로써 PSR-0을 향상시킵니다. 이를 통해 개발자는 네임 스페이스의 일부를 모든 디렉토리에 매핑하여 깊은 디렉토리 중첩의 필요성을 줄일 수 있습니다. 이로 인해 프로젝트의 디렉토리 구조를보다 쉽게 관리하고 탐색 할 수 있습니다. PSR-0이 감가 상승합니까? 이것은 여전히 기능적이지만 새로운 프로젝트에 사용하는 것이 권장되지 않음을 의미합니다. PSR-4는 php에서 자동로드에 권장되는 표준입니다.
PSR-4에서 자동로드가 어떻게 작동합니까? PSR-4에서는 네임 스페이스의 일부를 모든 디렉토리에 매핑하여 작동합니다. . 그런 다음 나머지 네임 스페이스는 하위 디렉토리 구조에 매핑됩니다. 이것은 자동로드에 대한보다 유연하고 효율적인 접근 방식을 허용합니다.
PSR-4를 사용하면 어떤 이점이 있습니까? PSR-4는 자동로드에 대한보다 유연한 접근 방식을 포함하여 몇 가지 이점을 제공합니다. 깊은 디렉토리 중첩 및 효율성 향상이 필요합니다. 또한 PHP의 자동로드에 권장되는 표준이므로 새로운 프로젝트에 적합한 선택이됩니다.
PSR-0에서 PSR-4로 마이그레이션 할 수 있습니까? PSR-0에서 마이그레이션 할 수 있습니까? PSR-4에는 네임 스페이스와 디렉토리가 매핑되는 방식을 변경하는 것입니다. PSR-4에서는 네임 스페이스의 일부를 디렉토리에 매핑 할 수 있고 나머지 네임 스페이스는 하위 디렉토리 구조에 매핑 될 수 있습니다. 이를 위해서는 프로젝트 디렉토리 구조를 재구성해야 할 수 있습니다 구형 PHP 버전에서 PSR-4를 사용할 수 있습니까? PSR-4에는 PHP 5.3 이상이 필요합니다. 이전 버전의 PHP를 사용하는 경우 PSR-4를 사용하려면 업그레이드해야합니다. PHP에서 자동로드의 미래는 무엇입니까?
AutoLoading의 미래는 PHP는 언어와 생태계가 발전함에 따라 새로운 표준과 관행이 도입되면서 계속 발전 할 것입니다. 그러나 가까운 미래의 경우 PSR-4는 PHP의 자동로드에 권장되는 표준입니다.
위 내용은 자동 로더의 전투 : PSR-0 vs. PSR-4의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!