2009-12-21 3 views
4

set_error_handler() 함수가 오류가있을 때 함수를 호출하도록 설정했습니다.set_error_handler 함수가 자동로드를 호출하지 않습니다

function acs_error_handler($errno, $errstr, $errfile, $errline) {  
    throw new acs_exception($errstr, $errno);  
} 

이 나에게 다음과 같은 오류 제공합니다 : 나는 예외 클래스의 내 자신의 구현이 그 함수에서

어떤 이유

Fatal error: Class 'acs_exception' not found

을,이 기능은 내 자동로드 함수를 호출하지 않습니다 나는 이것을 사용하여 설정했습니다 :

spl_autoload_register('__autoload'); 

다음 줄을 추가하면 :

__autoload('acs_exception'); 

오류 함수에서 클래스를 호출하기 전에 모두 작동합니다.

내 질문 : 오류 트리거 함수에서 acs_exception 클래스를 호출 할 때 __autoload() 함수가 실행되지 않아야합니까 ??

+1

제쳐두고, 이름에 얼마나 많은 연속 밑줄을 사용하여 정확히 몇 개를 말할 수 있습니까? –

+0

미리보기가 엉망이되어서 _을 추가해야했습니다. – AntonioCS

답변

3

Here's a related PHP bug report.

Your error is triggered at compile-time, which disables autoload (and spl_autoload at the same time).

Won't be fixed for PHP5.3 as it may cause lots of other problems.

+0

정말 대단합니다 ... : ( 정보 주셔서 감사합니다 – AntonioCS

+0

간단히 직접 자동로드 기능을 호출하여 문제를 해결했습니다 :) 다시 한 번 감사드립니다. – AntonioCS

1

이 문제는 PHP 5.4.21에서 수정되었으므로 이제 SPL 자동로드 기능도 오류 처리 기능에서 트리거됩니다! :)

관련 문제