2010-07-29 1 views

답변

3

이 클래스의 예외가 throw 된 경우 스크립트의이 시점에 이미 포함되었습니다. 그리고 그것이 던져지지 않으면 나쁜 일은 일어나지 않습니다. 이러한 예외가 정의되지 않은 경우 typehint는 오류를 발생시키지 않습니다. 다음 코드를 실행 해보십시오.

try { 
echo 'foo'; 
} catch (SomeNonExistentException $e) { 
echo 'bar'; 
} 
echo 'baz'; 
+0

정확합니다. 유형 힌트에는 클래스가 존재하지 않아도됩니다. '$ obj instanceof FooClass'를 전달하는 객체의 힌트만을 전달할 것이지만'FooClass'는 결코 존재할 필요가 없습니다 (파서의 입장에서). – ircmaxell

+0

고마워요. 이 여분의 코멘트로 지금 나는 그것을 얻는다. 형식 힌트와 관련이있는 것 같습니다. 그리고 그것은 중요한 용어였습니다. 고마워. – MEM

2

가 아니, 당신은 할 필요가 없습니다 MEM은 try/catch 블록에서 다시는-있습니다. 파일이 포함되면 스크립트의 전체 처리에 유효하거나 사용할 수 있어야합니다.

+0

나는 그 점을 놓쳤다 고 생각합니다. 예외를 throw하는 경우에만 예외 클래스를 요구하면됩니다. 그래서 내가 OP를 읽는 것은 catch 블록에 타입 힌트를위한 클래스를 포함 시켜서 작업 할 필요가 있는지입니다. ($ obj = new Foo()가 치명적인 에러 'Foo' 클래스가 정의되어 있지 않은 경우) ... – ircmaxell

+0

Gotcha, 아마도 그것을 놓쳤을 것입니다. 정교 해줘서 고마워. –

1

CustomException을 던지는 클래스가있는 파일을 포함시킬 때 이미 CustomException 클래스가 포함되어 있기 때문에 올바르게 수행하려는 작업을 이해하는 경우 입니다.

main.php :

include("include1.php"); 
var_dump($variable_defined_in_include2); 

include1.php :


우리가 (파일 자체 포함) 파일을 포함하는 주요 파일이 다음과 같은 상황을 고려

include("include2.php"); 

include2.php :

$variable_defined_in_include2 = true; 

main.php에는 include2.php가 포함되지 않지만 include1.php가 포함되어 있기 때문에 $variable_defined_in_include2이 설정됩니다 (include2.php 포함).

관련 문제