TIP게시판

제목 A PHP Error was encountered
글쓴이 문군 작성시각 2019/09/26 12:18:57
댓글 : 1 추천 : 0 스크랩 : 0 조회수 : 9513   RSS

보통 코드 이그나이터를 쓰다보면 이런 식의 에러 메시지를 보여준다.

 

A PHP Error was encountered

Severity: Notice

Message: Trying to get property of non-object

Filename: controllers/board.php

Line Number: 24

 

객체를 참고 했는데 객체가 존재하면 문제없이 출력하지만 객체가 없는 경우 위와 같은 에러 메시지가 나온다.

 

예를 들어 $member 라는 객체에 데이터를 담아 출력한다고 하면 $member->mb_hp 이런 식으로 데이터를 출력 한다고 하면 데이터가 없을 때, 위와 같은 에러가 출력된다.

 

유효성 검사 없이 바로 출력했기 때문이다. 

 

해결책은 유효성 검사를 먼저 하는 것이다.

 

$member라는 변수는 보통 array 객체 이기 때문에 count라는 내부 함수로 처리하는 것으로 하는데 숫자를 세면 객체가 없으면 0을 리턴하게 되고 0이상이면 객체가 있기 때문에 초기화된 변수에 담는다.

 

잘못된 예시

echo $member->mb_hp;

 

올바른 예시

 

방안 1

$mb_hp="";
if(count($member)>0)
{
$mb_hp=$member->mb_hp;
}
echo $mb_hp;

방안 2 (삼항 연산자 사용)


$mb_hp=count($member)>0?$member->mb_hp:"";
echo $mb_hp;

 

 다음글 wp 스타일 후크 헬퍼 (2)
 이전글 XSS filtering에 대해서 (5)

댓글

변종원(웅파) / 2019/09/26 12:38:43 / 추천 0
미리 선언해주는게 제일 좋은 방법이고 배열의 경우엔 기술해주신 것처럼 해주시는게 좋습니다. ^^