1

私は中級レベルの開発者であり、今日まで、数年前にコーディングした非推奨のmysql*関数を使用するデータベースクラスがありました。アップグレードしたいのですが、何かを選ぶ前に、stackoverflowの意見を聞きたかったのです。

以前は2つの選択肢がありました。MySQLiとPDO。最近、上級開発者から、データベースクラスを完全に削除し、DoctrineDBALを学習して使用するように言われました。

DoctrineDBALについてはよくわかりません。それは私のミニフレームワークにとってやり過ぎでしょうか?

何を選んで使用する必要がありますか、またその理由は何ですか?

4

4 に答える 4

2

PDOは完全に問題ありません。教義は肥大化していて遅いです。私はそれについて恐ろしい経験しかありませんでした、そしてそれをPDOの上で使う正当な理由を見つけることができません。ちなみにDBAL!=ORM。DBALはDB抽象化レイヤーです。PDOはデータアクセス層です。とにかく、PDOは素晴らしいツールです。

于 2013-03-02T05:20:59.973 に答える
1

良い質問をありがとう。

まず、MySQLiとPDOの質問についてです。
自分のクラスの新しい拠点を探している場合

  • ネイティブのプリペアドステートメントを使用する場合は、mysqliの実装がひどいため、PDOが唯一の選択肢です。
  • 古いmysqlベースのクラスに独自のプレースホルダーがすでにある場合-mysqliは移行が簡単です。

完全に新しいクラスを探している場合は、PDOが唯一の選択肢です。これは、いくつかの抽象化機能を備えているため、使用がはるかに簡単になり、コードが大幅に短縮されます。最近、私はPDOタグの機能のいくつか(および落とし穴)を説明するwikiを作成しました-あなたはそれが役に立つと思うかもしれません。
ただし、多くの重要な機能が欠けています。したがって、手作りのヘルパークラスは依然として最良の選択です。

プレースホルダーをまだ実装していない場合は、プレースホルダーがそのようなクラスの主な理由である必要があるため、既成のクラスをお勧めします。安全性、DRYコード、使いやすさという3つの目標を念頭に置いてSafeMysql
を 作成しました。 タイプヒントのプレースホルダーのアイデアが欲しいと思います。

教義に関しては、個人的には、そのようなレベルの抽象化は好きではありません。私はできるだけSQLに近づけることを好みます。安全性とより少ないコードのためのほんの数人のヘルパーで。

そのすべてのパフォーマンスに関するメモ。
DBALがボトルネックになるアプリケーションを見たことがありません。したがって、(架空の)パフォーマンスの問題が何であれ、最も懸念する必要はありません。
信頼できる唯一の証拠は、実際のデータを使用した実際の環境でのプロファイニングです。

于 2013-03-02T05:24:27.377 に答える
0

MySqliまたはPDOを使用しない理由は世界にはまったくありません。どちらかが最も快適だと感じます。

私見では...

PS:「DoctrineDBAL」についても聞いたことがありません:)

PPS:別の抽象化レイヤーは、多くの場合、肥大化、パフォーマンスの低下、柔軟性の低下を意味します。学習曲線は言うまでもありません。PDOまたはMySqliに固執するすべての非常に良い理由。

于 2013-03-02T05:22:11.427 に答える
0

これがMySQLの場合のみ、mysqliを使用してください。PDOと比較してわずかに(わずかに最大10%を意味します)高速です。変換や型変換などのDoctrineDBALの追加機能を使用したい場合は、試してみることができます。そうでない場合は、Doctrine DBALと比較してはるかに高速(最大10倍)でメモリ使用量が少ないため、PDOを使用してください。

于 2013-03-02T05:27:32.880 に答える