良い質問をありがとう。
まず、MySQLiとPDOの質問についてです。
自分のクラスの新しい拠点を探している場合
- ネイティブのプリペアドステートメントを使用する場合は、mysqliの実装がひどいため、PDOが唯一の選択肢です。
- 古いmysqlベースのクラスに独自のプレースホルダーがすでにある場合-mysqliは移行が簡単です。
完全に新しいクラスを探している場合は、PDOが唯一の選択肢です。これは、いくつかの抽象化機能を備えているため、使用がはるかに簡単になり、コードが大幅に短縮されます。最近、私はPDOタグの機能のいくつか(および落とし穴)を説明するwikiを作成しました-あなたはそれが役に立つと思うかもしれません。
ただし、多くの重要な機能が欠けています。したがって、手作りのヘルパークラスは依然として最良の選択です。
プレースホルダーをまだ実装していない場合は、プレースホルダーがそのようなクラスの主な理由である必要があるため、既成のクラスをお勧めします。安全性、DRYコード、使いやすさという3つの目標を念頭に置いてSafeMysql
を
作成しました。
タイプヒントのプレースホルダーのアイデアが欲しいと思います。
教義に関しては、個人的には、そのようなレベルの抽象化は好きではありません。私はできるだけSQLに近づけることを好みます。安全性とより少ないコードのためのほんの数人のヘルパーで。
そのすべてのパフォーマンスに関するメモ。
DBALがボトルネックになるアプリケーションを見たことがありません。したがって、(架空の)パフォーマンスの問題が何であれ、最も懸念する必要はありません。
信頼できる唯一の証拠は、実際のデータを使用した実際の環境でのプロファイニングです。