개발 Q&A

제목 빈값 검증의 이상적인 방법?
글쓴이 NKS 작성시각 2016/02/11 16:10:05
댓글 : 6 추천 : 0 스크랩 : 0 조회수 : 12038   RSS

php로 코딩된 수많은 코드를 볼때마다 느끼는 점 중 하나인 빈값 검증 방법..

여러분은 어떻게 쓰시나요..

정말 다양해서인지... 뭐가 좋은지는 잘 모르겠네요. 나름대로의 취향인듯한데..

 

1. if($value)

2. if($value == "")

3. if($value != null ) 또는  if($value !== null )

4. if(isset($value)

5. if(is_null($value)

6. if(sizeof($value) > 0)

7. if(empty($value))

 

Null 과 "", 0 은 차이는 분명 존재하지만 대부분 공통되게 처리되는 경우가 많아 통일되지 않고 다양하게 나뉘는듯합니다.

내용과는 상관없지만.. php7엔 <=> 라는 연산자도 추가됬더군요. 같으면 0 , 한쪽이 크면 1 또는 -1...

 

P.S 오해가 있을듯해서 살짝남깁니다. 개인적으로는 PHP의 연산자 종류가 복잡해지는 원인 중 하나가 명시적인 캐스팅보다는 암묵적 캐스팅에 의존되어 코딩한다는 점이라고 생각합니다. 연산자의 문제점은 아니지만 다른 언어에 비해 햇갈릴 여지가 많다는 점을 말하고 싶었습니다.

 다음글 아마존 AWS SignatureDoesNotMatch (3)
 이전글 bootstrap-datepicker 제이쿼리 클릭이벤... (3)

댓글

kaido / 2016/02/11 16:18:16 / 추천 1

상황에 따라서 다릅니다.

기본적으로 php의 null == false == 0 == ""  이 패턴은 오토캐스팅에 의한 것이지, 연산자가 이상 한 것은 아닙니다.

디폴트로는 1번 방법이 흔히 사용 되며, 해당 값을 배열로 받아오는지 안오는지 알수 없을 경우에는  4번과 7번 입니다.

5번은 배열은 있지만, 값이 비어있는지 확인 입니다.

 

요는 배열 포인트의 값을 체크 하는지, 해당 포인트의 값을 체크하는지의 차이 입니다.

NKS / 2016/02/11 17:13:16 / 추천 0

조언 감사합니다.

그.. is_null 은 제가 알기로는 자료형의 동일여부까지 비교하여 ( === 와 동일하게 ) 판단하는걸로 알고 있었는데.. 아닌가요?

kaido / 2016/02/11 17:16:06 / 추천 0

@NKS

저도 마스터는 아닌지라 NKS님이 그렇다면 그런거겠죠 ㅎㅎ

비교를 조금 더 정확하게 위해서 === 를 사용했었는데, 최근엔 그냥 1번 타입으로 몰아서 쓰고 있습니다.

어차피 숫자 0 만 조심 하면 다 해결 됩니다 ㅎ

한대승(불의회상) / 2016/02/11 18:03:27 / 추천 0
1,2,3번 방법의 경우 빈 배열이 넘어와도 true 판정이 되어서 7번을 자주 사용 합니다.
배강민 / 2016/02/11 22:02:48 / 추천 0
전 상황에 따라 다르겠지만, isset === true && !empty 를 자주 쓰곤 합니다.
/ 2016/02/12 09:11:59 / 추천 0

전 그때그때 섞어서 사용합니다..