만들고 싶은 자료가 적지 않지만 요즘은 짬 날 때마다 코어에서 제공하는 notice 에러를 디버깅하고 있습니다.

에러는 많고 시간은 없으니 첩첩산중이에요 ㅎㅎ

 

코어 쪽은 그래도 어느 정도 자리를 잡기는 했는데 그래도 간혹 notice 에러가 보이면 깃허브에 바로바로 신고를 하고 있습니다.

여러분도 신고해주세요. 이러다 제가 도배할 듯해요ㅋㅋㅋ

 

그러던 중 기진곰님이 0값 체크하는 데 empty 함수를 쓸 수 있다고 하셔서 또 한 번 배움을 얻었습니다.

저는 그동안 empty가 isset + 빈 배열 체크 정도의 기능을 가진 것으로만 알고 있었거든요.

차근히 레퍼런스를 살펴보니 empty가 이번 notice 버그를 잡는 데 꽤 유용하겠다는 생각이 들었습니다.

다음을 비어있는 것으로 판단합니다.

"" (빈 문자열)

0 (정수 0)

"0" (문자열 0)

NULL

FALSE

array() (빈 배열)

var $var; (클래스 안에서 값 없이 선언된 변수)

empty 함수가 이런 것들을 모두 체크하더라구요.

 

지금 보면 각종 서드파티들에서 나타나는 notice 에러의 상당수가 변수를 선언하지 않은 채 변수값 유무로 조건문을 다는 경우들이던데요.

이때 특별히 기대되는 변수값(숫자, 배열 등)이 따로 있다면 isset뿐 아니라 !empty로 함수를 적용하면 좀 더 유연하게 대처할 수 있겠더라구요.

 

암튼 저뿐 아니라 적지 않은 분들이 notice 에러 잡느라 고생하실 것 같아서 한번 정리를 해봤습니다~

윤삼

profile
아무래도 중급 초반 수준의 코딩 오타쿠인 것 같습니다.
  • profile

    대신 상황에 따라 if 조건문이 다소 지저분해보이는 것 같습니다.
    변수가 많아지면 조건절에 변수 선언 여부를 체크하는 로직을 넣는 것 보다, 변수를 초기화하는 게 나을 것 같아요

    @php
        $act = $act ?: '';
        $mid = $mid ?: '';
    @endphp




    이런 식으로 직관적인 변수를 하나 만들어서 조건 체크해도 되고요.

    $_isWritePage = !empty($act) && in_array($act, [ 'dispBoardWrite', 'dispMarketplaceWrite' ]));
    $_isMypage = !empty($act) && in_array($act, [ 'dispMemberInfo', 'dispMemberModifyInfo', 'dispMemberOwnDocument' ]));

     

  • profile profile
    조건문들이 길어져서 직관성이 떨어지긴 하더라구요.
    말씀하신 것처럼 대응하는 게 좋을 것 같은데, 저는 처음부터 아무 생각없이 패치를 하다보니(게다가 깃허브로 관리하는 것도 아니고 해서) 반복적으로 나오는 조건문들에 하나하나 isset 같은 함수를 적용해버려서 완전 지저분해져버렸습니다ㅜㅜ