J'ai donc ce morceau de code dans un modèle étendu (MY_Model) dans CodeIgniter:En utilisant une seule fonction get pour tous les modèles
function get($options = array(), $selects = array(), $joins = array(), $table, $object = TRUE)
{
if(!empty($options))
{
foreach($options as $option => $array)
{
foreach($array as $column => $value)
{
$this->db->{$option}($column, $value);
}
}
}
if(!empty($select))
{
foreach($selects as $select)
{
$this->db->select($select);
}
}
if(!empty($joins))
{
foreach($joins as $join => $array)
{
foreach($array as $jointable => $column)
{
$this->db->join($join, $join.'.'.$column.'='.$jointable.'.'.$column);
}
}
}
$query = $this->db->get($table);
return $query->result();
}
où je peux passer des tableaux comme ci-dessous:
$options = array(
'where' => array(
'companys.companyID' => $companyID
)
);
$select = array(
'companyID',
'companyName'
);
$join = array(
'persons' => array(
'companys' => 'companyID'
)
);
$result = $this->companyModel->get($options, $select, $join, 'companys');
print_r('<pre>');
print_r($result);
Ma question est, y at-il une raison pour laquelle ce n'est pas une bonne idée. J'ai étendu le CI_Model par défaut dans mon propre MY_Model, et tous les autres modèles peuvent utiliser get, et ont toujours leurs propres fonctions. J'ai des fonctions similaires pour les autres actions de base du CRUD.
Est-ce l'autre façon de séparer les fonctions dans les modèles pour faire la plupart du travail et avoir le plus petit contrôleur possible le meilleur itinéraire. Même si cela signifie que vous écrivez les mêmes mandrins de code dans tous les modèles? J'espère que ce n'est pas une question stupide ou j'ai mal compris quelque chose de fondamental sur MVC mais merci pour les réponses de toute façon.