3

PHPで優れたPDOラッパークラスを探していました。私が見たクラスの中で自分のニーズに合ったクラスはなかったので、自分のクラスを作成することにしました。以前に作成したクラスを拡張mysql_*して、ネイティブエスケープ、dbに依存しない、プリペアドステートメントなどを統合するために今では恐ろしい関数を使用しました。

私が疑問に思っていたのは、このようなクラスを開発して使用するための最良のアプローチは何ですか?1つの代替案は、インスタンスによるものです。

$db = new Database();
$db->query("SELECT this FROM that");

もう1つは、静的メソッドを使用する場合です。

DB::query("SELECT foo FROM bar WHERE answer=42");

最初の方法を使用することを好むフレームワーク(例:Joomla API)を見たことがありますが、2番目の方法で起こりうる落とし穴がどれであるかはわかりません。

何か洞察はありますか?

4

2 に答える 2

5

個人的には、PDOラッパークラスの必要性はわかりません(PDOはそれ自体がデータベースラッパークラスです)。

ただし、それを実行したい場合は、いくつかの理由から、インスタンスとして実行してください。

  1. より理にかなっています。複数のデータベース接続が必要になる場合があります。
  2. 使いやすいです。
  3. それは悪であるより少ないグローバルスペースを使用します。
  4. それは私を幸せにします。

そうですね、ほとんどのタスクにはネイティブPDOを使用しますが、インスタンスがその方法です。

于 2012-07-12T15:41:45.607 に答える
-3

データベースクラスの静的インスタンスは、オブジェクトをパラメータまたは呼び出しとして関数/メソッドに渡す代わりに、global($db)単に呼び出すことができ$db = Database::instance()、新しいオブジェクトをインスタンス化する代わりに、シングルトンにアクセスできるので便利です。

アプリケーションをどのように機能させるかによって異なります。

于 2012-07-12T15:40:56.277 に答える