foldrr's weblog

旧ブログ http://d.hatena.ne.jp/foldrr/

なぜ CakePHP の findAll() や findCount() は非推奨になった?

環境

疑問

マニュアルによると、モデルの findAll() や findCount() は非推奨になっている。
なぜ非推奨なのだろう?

メモ

  • 非推奨となった関数は、手軽に書けるというメリットがある。
  • それでも非推奨となったということは、手軽さよりも重複を排除することが大切という考え?
  • でも、手軽であることも事実。
  • CakePHP も最初は findAll() や findCount() を使っていた。
  • ということは「〜でマズい」という何か発見があったはず。
  • それは「簡単さより重複排除が大切」という考えだけなのか?
  • 他にも理由があるのか?
  • なぜ findAllBy() は非推奨にならないのか?
  • 便利だからという理由で使ってしまいそうな自分にもう少しブレーキを掛けられる知見が欲しい。

解決

"CakePHP why is findall deprecated" で検索したら、こんなのがあった。

<?php
$model->findAll(null, null, null, null, 1, null);
?>

findAll is unreadable

名前付き引数にしようよ、ということね。
確かに↑のコードを見て5番目の引数の意味はリファレンスを見ないと分からない。
そして findAllBy() が非推奨になっていない理由も分かる。
findAllBy() は引数の意味について迷うことがないからだ。