5

私はWebアプリケーションを設計中です(実際、それは趣味であり、自分自身に設計を教えようとしています。それを行うよりも良い方法があります:)。とにかく、私は自分のデータベースをどのように扱うかを考えていました。私はPDOに慣れており、抽象化クラスでPDOを活用することを考えていました。データベース接続が1つだけになるように、シングルトンを作成することを考えています。このシングルトンは、PDO接続を作成します。

その後、なぜ他のことをしすぎる必要があるのか​​わかりません。次に、データベースハンドラーを使用してPDO関数を呼び出すことができます。いくつかのヘルパー関数が必要な場合もありますが、実際のSQLクエリにはPDOを使用します。

このアプローチに何か問題がありますか?私が使用した抽象化クラスと比較すると、非常に単純なようです。

4

4 に答える 4

5

シングルトンは必要ありません。

データベースシングルトンは、同時実行性の問題を解決しません。どちらかといえば、作成されたリクエストに対してPDOインスタンスが1つしかないことを確認できます。そしてそれは多くの人々が悪いことだと考えるグローバルなアクセスを提供します。さらに、シングルトンをテストするときは、さらに努力する必要があります

必要に応じてブートストラップにインスタンスをレイジー接続して保存するラッパーを作成し、インスタンスをDAL スーパータイプ(TableDataGatewayなど)に設定するだけです。また、この方法では、ある時点で2番目のインスタンスが必要になった場合に備えて、1つのPDOインスタンスだけに制限することはありません。

于 2010-07-18T08:46:11.030 に答える
3

PDOは本質的にデータベース抽象化クラスであるため、おそらくそれは非常に単純に思えます。つまり、作業はすでに完了しています。

于 2010-07-17T15:29:18.583 に答える
2

ええ、これは良いスタートです。PDO +シングルトンは、頻繁に使用される優れた組み合わせです。個人的には、シングルトンを使用するよりもすべてのタイピングが好きではないため、非常に軽量なデータベースクラスを作成しました。

__callStaticPDOに追加された機能は2つだけです。 (DB::query()の代わりに)を使用した(遅延)PDOインスタンスへのアクセスと、DB::instance()->query()引用を簡単にするための2つの関数(DB::q('INSERT INTO table (name) VALUES (?s)', $_POST['insecure_name']))です。多分あなたは両方を見たいと思うでしょう、それは本当に便利です;)

于 2010-07-17T15:43:21.967 に答える
1

プロジェクトphp-pdo-wrapper-classにも興味があるかもしれません。これは、PDOを拡張する軽量のデータベースクラスであり、一般的なSQLステートメントを簡素化するためにいくつかのメソッド(挿入、更新、削除、選択(およびその他のいくつか))を追加します。私はこのプロジェクトを開発に使用したので、強くお勧めします。

于 2010-11-29T01:11:37.890 に答える