array
私は自分のモデルとビヘイビアで、CakePHP の検索操作に特別な条件を追加する小さな関数を作成することがよくあります。これらの関数を実装するには、3 つの可能性があると考え続けています。考えられるコードパターンは常に 3 つになるようです。
limitErrorCount
検索クエリのルールを追加するa 関数を使用して、これら 3 つのパターンを示します。
パターン #1: 引数とリターン
public function limitErrorCount(array $conditions)
{
$conditions['AND'][] = 'Document.errors <'=>10;
return $conditions;
}
$conditions = array(....);
$conditions = limitErrorCount($conditions);
$records = $this->find('all',$conditions);
パターン #2: 参照渡し
public function limitErrorCount(array &$conditions)
{
$conditions['AND'][] = 'Document.errors <'=>10;
return $conditions;
}
$conditions = array(....);
limitErrorCount($conditions);
$records = $this->find('all',$conditions);
パターン #3: リターンとマージ
public function limitErrorCount()
{
$conditions = array('AND'=>array('Document.errors <'=>10));
return $conditions;
}
$conditions = array(....);
$conditions = Hash::merge($conditions,limitErrorCount());
$records = $this->find('all',array('conditions'=>$conditions));
3 つのパターンすべてが機能します。
3 つの方法の中でどの方法が最適なのか疑問に思っています。また、なぜそれが優れているのかについて、専門家の PHP の洞察が得られるかもしれません。