사용자 정의 zend_autoloader에서의 적절한 오류 처리?
-
20-09-2019 - |
문제
Zend Framework의 자동 로딩을 기반으로 사용자 정의 자동 로더를 구축하고 있습니다 (관련 질문 여기).
그 질문에서 가져온 기본 접근법은
class My_Autoloader implements Zend_Loader_Autoloader_Interface
{
public function autoload($class)
{
// add your logic to find the required classes in here
}
}
그런 다음 새로운 Autoloader 클래스를 클래스 접두사에 바인딩합니다.
이제 내가 확실하지 않은 것은 내부의 오류를 처리하는 방법입니다. autoload
적절한 ZF 준수 방식으로 메소드 (예 : "클래스 파일을 찾을 수 없음"). 저는 프레임 워크, 컨벤션 및 스타일을 처음 사용합니다.
조용히 거짓을 반환하고 클래스 제작 프로세스가 충돌하도록합니까?
어떻게 든 오류 또는 로그 메시지를 출력합니까 (문제를 정확히 찾아내는 것이 좋을 것입니다)와 False를 반환합니까? 그렇다면 Zend 방법은 무엇입니까?
오류를 트리거합니까?
예외를 던지나요? 그렇다면 어떤 종류?
해결책
그것은 종류의 오류에 따라 다릅니다. 클래스를로드 할 수 없다면 치명적인 오류라고 생각합니다. 따라서 나는 예외를 던질 것이다
class My_Autoloader_Exception extends Exception {}
ZF는 패키지 레벨과 또한 많은 사용자 정의 예외를 사용한다는 것을 알게 될 것입니다. 수업을 제공합니다 이것을 확장하기 위해 (이 선택 사항을 고려하지만).
또한 사용 예가 있습니다 Zend_Exception
그들의 자동 로더와 함께 :
try {
// Calling Zend_Loader::loadClass() with a non-existant class will cause
// an exception to be thrown in Zend_Loader:
Zend_Loader::loadClass('nonexistantclass');
} catch (Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "\n";
echo "Message: " . $e->getMessage() . "\n";
// Other code to recover from the error
}
다른 팁
ZF 자체는 두 가지 다른 접근법을 사용합니다.
Zend_Loader
(그만큼 낡은 자동로드 메커니즘) 던졌습니다Zend_Exception
뭔가 잘못된 경우Zend_Loader_Autoloader
보고false
사용 된 등록 된 자동 로더가 반환 될 때false
그만큼 Zend_Loader_Autoloader
중고 자동 로더에 던져진 예외는 결국 사용자 정의 예외로 인해 Zend_Loader_Autoloader
. 나는 개인적으로 그냥 돌아옵니다 false
요청 된 클래스를로드 할 수없는 경우.