CodeIgniter (プロジェクトへのリンク)のサブクエリ ライブラリに取り組んでいます。これは、通常のオブジェクトの代わりに使用できるデータベース オブジェクトを返すことによって機能し$this->db
ます。
もともと、私は毎回新しいデータベース オブジェクトを作成していました。
$this->CI =& get_instance();
$db = $this->CI->load->database('', true);
しかし、その後、これにより毎回新しいデータベース接続が作成されることに気付きました (というか、誰かに指摘されました)。そこでclone
、新しいものを作るのではなく、オブジェクトを作ることにしました。
コードを次のように更新しました(完全なコードへのリンク):
class Subquery{
var $CI, $db;
function __construct(){
$this->CI =& get_instance();
$this->db = $this->CI->db; // Default database connection
}
function start_subquery(){
$newDatabase = clone $this->db;
// some more code
return $newDatabase;
}
}
これをテストしましたが、うまくいくようですが、これで問題が解決するかどうかはわかりません。usingclone
は新しいデータベース接続を作成しますか、それとも参照を内部的に使用して 1 つの接続のみを保持しますか?