2011-10-18 13 views
0

私はかなり古いシステムを管理しています。それは現時点でコードスープであり、ビットごとに私はコードをリファクタリングしています。PHP - データベースモデルの改善?

これを実行しているうちに気がついたのは、クエリの90%がCRUDだということでした。結合はありません。本当にシンプルなもの。

この結果、これらのタイプのクエリをカバーするモデルクラスを作成しました。次に、各テーブルのモデルクラスを拡張します。

class Model extends MySQLi { 
    public function __construct() { 
     global $site; 
     $mysql = $site['mysql']; 
     parent::__construct($mysql['host'], $mysql['user'], $mysql['pass'], $mysql['db']); 
    } 

グローバルの使用は嫌いですが、接続の詳細を心配することなくこれを行うことができます。

<?php 
class Contact extends Model { 

    public $table = 'contact'; 

} 

$Contact = new Contact; 
$Contact->get(array('where'=>array('id >' => 4), 'limit' => array(0, 20)); 

私の懸念は、スクリプトに3つのテーブルが必要な場合です。私は3つのモデルを使用しているので、確かに私は3つの独立したデータベース接続を持つことになるでしょうか?クラスごとに1つ?

これは私が思うように問題になるのでしょうか?

MySQLiを引き続き引き続き使用できるようにするための回避策がありますか?

+0

データベース接続のためのシングルトンパターンを使用して見てみましょう:http://php.net/manual/en/language.oop5.patterns.php – Raz

+1

は、あなたが使用して見てはならない理由を見てみましょうデータベース接続のシングルトンパターン:http://www.google.nl/search?gcx=w&sourceid=chrome&ie=UTF-8&q=singleton+bad+practice –

答えて

4

Mysqliを拡張しないでください。モデル内にMysqliを含めてください。

class Model { 
    protected $db; 

    public function __construct($db) { 
     $this->db = $db; // the mysqli instance. 
    } 
    ..... 
} 
+0

+1依存性注入 –