문제

에서 php.net:

PHP 5에서는 더 이상 필요하지 않습니다. 당신은 an을 정의 할 수 있습니다 __autoload() 아직 정의되지 않은 클래스/인터페이스를 사용하려는 경우 자동으로 호출되는 함수. 이 기능을 호출함으로써 스크립팅 엔진은 PHP가 오류로 실패하기 전에 클래스를로드 할 수있는 마지막 기회가 주어집니다.

이제 알고 싶어요. __autoload 동적 사이트에 적절한 클래스를로드하려면?

내 사이트를 설정하는 방식은 파일을 index.php 예를 들어 파일 http://www.site.com/index.php?p=page-i-want-to-load

따라서 내 사이트의 포럼 섹션이나 블로그 섹션에 있으면 적절한 클래스와 기능 만로드하고 싶으므로 AutoLoad를 사용하지만 수동으로 파일을 포함하지 않으려면 사용 중입니다. __autoload 최후의 수단으로서 아니면 높은 트래픽 시스템에서도 내가하고있는 일이 잘되고 있습니까?

도움이 되었습니까?

해결책

나쁜? 아니. __autoload() PHP 5에 가장 좋아하는 추가 사항 중 하나입니다. 응용 프로그램에 필요한 클래스 파일을 수동으로 포함/요구 해야하는 책임 (및 성가신)이 제거됩니다. 즉, '적절한 클래스'만로드되도록 개발자로서 당신에게 달려 있습니다. 이것은 구조화 된 명명 체계 및 디렉토리 구조로 쉽게 수행됩니다. 온라인에서 __atoload ()를 올바르게 사용하고 Google 검색을 수행하는 방법에 대한 많은 예가 있습니다. 많은 정보가 있습니다.

다른 팁

Autoload는 필요한 클래스 만로드하는 좋은 방법입니다.

PHP 5> = 5.1.2에서, 오래된 __ afoload ()에 대한 대부분의 문제는 덕분에 respeared spl_autoload_register ().

이제 알고 싶습니다. 동적 사이트에 적절한 클래스를로드하기 위해 __ aquoad 만 사용하는 것은 나쁜 관행입니까?

전혀. 자동로드에 의존 할 수 있습니다. 좋은 이름 지정 컨벤션을 고안하고 효율적인 자동 로더를 구현하기 만하면됩니다.

고려해야 할 한 가지 주요 문제가 있습니다. Zend Guard는 Things의 이름을 바꾸는 경향이 있기 때문에 Autoloading과 Zend Guard는 함께 잘 작동하지 않습니다. 이는 사용하기로 결정한 명명 컨벤션이 동일하지 않을 것임을 의미합니다. Zend Guard (또는 그 문제에 대한 다른 Obfuscator)를 사용하는 경우 모든 파일을 손으로 포함시켜야 할 것입니다.

다음은 Zend Guard 사용자 안내서의 인용문입니다.

디스크의 파일 이름이 난독 화 된 클래스 이름과 일치하지 않기 때문에 자동로드 클래스가 작동하지 않습니다.

__AutoLoad ()의 유일한 위험은 자동로드 기능이 열악한 경우입니다. 일반적으로 성능 히트 측면에서 얻을 수있는 것은 PHP가 클래스를 포함하는 올바른 파일을 찾으므로 몇 가지 디스크를 찾는 것입니다. 거꾸로 된 것은 모든 성가신 사람들을 제거하는 것입니다 include() 전화.

이 레벨에서 성능이 걱정된다면 이미 APC와 같은 Opcode 캐시를 사용해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top