Ho una funzione che accetta una serie di parametri, quindi li applica come condizioni a una query SQL. Tuttavia, mentre preferivo un array a argomento singolo contenente le condizioni stesse:
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;
}
}
}
Il mio collega preferiva elencare esplicitamente tutti gli argomenti invece:
function searchQuery($name = '', $phone = '') {
if ($name) {
$query->where('name', $value);
}
if ($phone) {
$query->join('phone');
$query->where('phone', $value);
}
}
La sua argomentazione era che elencando esplicitamente gli argomenti, il comportamento della funzione diventa più evidente, invece di dover scavare nel codice per scoprire quale fosse l'argomento misterioso $param
.
Il mio problema era che questo diventa molto prolisso quando si ha a che fare con molti argomenti, come 10+. C'è qualche pratica preferita? Il mio scenario peggiore vedrebbe qualcosa di simile al seguente:
searchQuery('', '', '', '', '', '', '', '', '', '', '', '', 'search_query')