2015-01-01 5 views
1

기본 배열 값을 빈 배열 또는 NULL로 설정할 때 차이가 있는지 궁금합니다. 예를 들어선택적 배열 인수 선언

:

function arrayTest(array $array = array()) { 
    if(!empty($array)) { 
     // Do something 
    } 
} 

또는 내가 첫 번째 예는 NULL 값이 전달 될 수 없습니다 두 번째 예는 이유로 형 주물 않는다는 것을 눈치 무엇

function arrayTest(array $array = NULL) { 
    if(!empty($array)) { 
     // Do something 
    } 
} 

.

다른 점은 무엇입니까? 어느 것을 사용해야합니까?

답변

3

다른 차이점은 인수를 전달하지 않으면 기본값이 array() 또는 null인데 두 개의 매우 다른 값입니다. 물론 확인할 수는 있지만 계정을 고려해야합니다. empty 두 가지 모두 작동하지만 null 이상의 foreach 루프는 잘 작동하지 않으며 다양한 배열 함수도 실패합니다.

정확한 내용 : 형식화 된 인수에 null을 전달하면 선언에 = null을 추가 한 경우에만 작동합니다. 이것은 배열뿐만 아니라 객체에 대해서도 마찬가지입니다. PHP에서는 PHP에서 필수이며 null 일 수있는 유형 힌 인수를 만드는 방법이 없습니다. 선언에 =null을 추가하면 null을 전달할 수 있지만 매개 변수를 생략 할 수도 있습니다.

빈 배열이나 null 사이에 논리적 인 차이가 없다면 빈 배열로 기본 설정하는 첫 번째 방법을 선택합니다. 그렇다면 최소한 입력이 항상 배열임을 알 수 있습니다. 나는 함수의 구현 자와 그것을 사용하는 프로그래머 모두에게 명확성을 추가한다고 생각한다. 그러나 그것은 단지 의견 일 뿐이며 강력한 의견조차도 아닙니다.

필자의 주요 충고는 옵션을 전혀 선택하지 않는 것입니다. 필자의 경험에 의하면,이 기능의 사용법이 불분명 해지고, 특히 코드가 커지고 인수가 추가 될 때 더욱 그렇습니다.