보통 코드 이그나이터를 쓰다보면 이런 식의 에러 메시지를 보여준다.
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;