2012-05-28 2 views
2

일단 __get 메서드에 다음 코드를 사용하는 사람을 보았습니다. 그래서 나는 복사하여 우아하게 보였습니다.개체 속성을 가져 오려면 예외를 throw해야합니까?

public function __get($param) 
{ 
    if (!isset($this->params[$param])) { 
     throw new Exception("Property doesn't exist"); 
    } 
    return $this->params[$param]; 
} 

그러나 지금은 재산의 존재 여부에 따라 간단한 조치를 수행 할 때 예외를 처리하기 위해 너무 많은 것 같다. 이 경우 더 좋은 방법은 무엇입니까? NULL을 반환하고 충분한 검사를하고 있습니까?

답변

0

PHP에서는 다른 언어와 달리 예외적 인 상황이 아닙니다. 나는 특별한 상황이없는 한 예외가 너무 극적이라는 점에서 당신과 동의합니다.

나는 수준 E_NOTICE 또는 E_USER_NOTICE의 널 (null)과 trigger 오류의 값을 반환하는 것입니다 PHP에서 정상 예상되는 동작을 모방하는 경향이있다. 정의되지 않은 속성, 배열 인덱스 또는 변수를 읽으려고하면 정상적인 동작입니다. 당신 btw-

는 마법 __isset 방법

을 구현 intrested하는 수 있습니다
0

나는 당신의 응용 프로그램이 무엇을 하느냐에 달려 있지만 NULL을 반환하고 검사하는 것으로 충분하다고 말합니다.

클래스가 런타임에 속성을 만드는 경우 예외를 throw하는 것이 좋습니다. 그러나 모든 속성이 컴파일 타임에 존재하면 NULL이 가장 좋습니다.

관련 문제