標準の PDOクラス ( )DBPDO
を拡張するクラス ( と呼ばれる) を作成しclass DBPDO extends PDO {}
て、PDO に付属するすべてのメソッドとプロパティを取得し、クエリをさらに制御できるようにしました (つまり、開発時のプロファイリングなど... )およびクエリのコーディング時に作業を高速化できるメソッド。
私はこのクラスを改善したいと思います。Web サイト全体で作成されるすべての接続について考えています。ほとんどの接続は、独立したクエリを実行するためにさまざまなスコープ内で作成されます。だから私は疑問に思っています:なぜ私はieを作成しなければならないのですか? アプリケーションの 5 つの異なるメソッド/クラス/関数で 5 つの接続が必要ですが、それらすべてで同じ接続を使用できますか?
永続的な接続を使用したくありません (たとえば、PDO で永続的な接続を使用することの欠点は何ですか)。
インスタンス化されたときに、存在する場合はすでにアクティブな接続を提供するか、新しい接続を提供するクラスが必要です。
ただし、問題があります。クエリの結果にアクセスし、結果ごとに別のクエリを実行する必要がある場合はどうすればよいですか? 必然的に2つの異なる接続が必要です。したがって、新しい接続が必要か、使用済みの接続が必要かを、この新しいクラスに伝える必要があります。
PDOConn
静的メソッドgetConnection($forceNew = false) {}
と静的プライベート プロパティを使用して、新しいクラスを作成することを考えていました$Connections = array()
。
接続が必要なときは、次のように書きます。
$dbh = PDOConn::getConnection();
PDOConn は、(既に動作しているクラス$Connections
のインスタンスの形式で) 少なくとも 1 つの接続が既に含まれているかどうかを調べ、そのオブジェクトを返します。DBPDO
が空の場合$Connections
、新しいオブジェクト ( のインスタンスDBPDO
) を作成し、そのオブジェクトを に追加して$Connections
返します。
新しい接続を強制的に作成したい場合は、次のように記述します。
$dbh = PDOConn::getConnection(true);
そのため、新しい接続が作成され、 に追加され$Connections
ます。getConnection
新しい作成を強制せずに が再度呼び出されると、PDOConn
最初に作成された接続 (または最後の接続?) が返されます。
質問
これは良い方法、良いアイデアだと思いますか? より良い提案はありますか?何よりも、私がクラスの機能で考慮していなかったPDOConn
ことが、私が今理解していない問題を引き起こす可能性があると思いますか? そのようなクラスを書くことは、PDO 接続を管理する価値があると思いますか? つまり、新しい接続を作成する必要がないときに接続を再利用したかったので、このスレッドを開始しました。
ありがとうございました。