매개 변수 집합을 가져 와서 SQL 쿼리의 조건으로 적용하는 함수가 있습니다. 그러나 조건 자체를 포함하는 단일 인수 배열을 선호했습니다.
function searchQuery($params = array()) {
foreach($params as $param => $value) {
switch ($param) {
case 'name':
$query->where('name', $value);
break;
case 'phone':
$query->join('phone');
$query->where('phone', $value);
break;
}
}
}
제 동료는 대신 모든 인수를 명시 적으로 나열하는 것을 선호했습니다.
function searchQuery($name = '', $phone = '') {
if ($name) {
$query->where('name', $value);
}
if ($phone) {
$query->join('phone');
$query->where('phone', $value);
}
}
그의 주장은 인수를 명시 적으로 나열함으로써 신비한 주장 $param
이 무엇인지 알아 내기 위해 코드를 탐구 해야하는 것과는 달리 함수의 동작이 더 분명해진다 는 것입니다.
내 문제는 10 +와 같은 많은 논쟁을 다룰 때 이것이 매우 장황하다는 것입니다. 선호하는 관행이 있습니까? 최악의 시나리오는 다음과 같습니다.
searchQuery('', '', '', '', '', '', '', '', '', '', '', '', 'search_query')
foreach
경우에는가 필요하지 if(!empty($params['name']))
않으며 foreach
및 대신 사용할 수 있습니다 switch
.
!empty($params['name'])
매개 변수를 테스트 하는 데 사용하지 마십시오. 예를 들어 문자열 "0"은 비어 있습니다. array_key_exists
키를 확인하거나 isset
신경 쓰지 않는 경우 사용 하는 것이 좋습니다 null
.