문제

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 요청 된 클래스를로드 할 수없는 경우.

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