2011-06-27 2 views
0

I持っている二つのクラス:を開き、別のクラスの接続クラス(PHP)

SQL接続クラス

class MysqlDB { 

    protected $_mysql; 
    protected $_where = array(); 
    protected $_query; 
    protected $_paramTypeList; 

public function __construct($host, $username, $password, $db) { 
     $this->_mysql = new mysqli($host, $username, $password, $db) or die('There was a problem connecting to the database'); 
    } 

    public function query($query) 
    { 
    //...................... } 

    public function __destruct() { 
     $this->_mysql->close(); 
    } 
} 

ユーザークラス

class cUser { 

    private $_name; 
    private $_email; 
    private $_password; 

    public function __construct() { 
     $this->_name = ''; 
     $this->_email = ''; 
     $this->_password = ''; 
    } 

    public function getUser($username) { 
     global $db; 
     return $db->query("SELECT * FROM user where username='$username'"); 
    } 


} 


**index.php** 
<?php 
require_once('cMysqlDB.php'); 
require_once('cUser.php'); 

$db = new MysqlDB('host','username','password','db'); 
$user = new cUser(); 
$userData = $user->getUser('username'); 
print_r($userData); 
?> 

は完全に動作します!ありがとうございますSabeen Malik

+0

は本当にのMySQLdbのタイプのユーザーですか?または、ユーザーは単にデータベース接続クラスを使用する必要がありますか? –

+0

申し訳ありません...私はユーザーデータを取得するときに接続を開く方法がわからないため、MysqlDBを継承しています...私は自分の質問を更新しました。 – n00bi3

答えて

0

MySQLクラスからUsersを継承する理由は完全にわかりませんが、しかし、とにかく、もしあなたが本当にそれをやる必要があれば。代わりに

$this->_conn = new MysqlDB($host, $username, $password, $db); 

は行います

parent::__construct($host, $username, $password, $db); 

あなたは$this->_connはちょうど私がMysqlDBクラスはシングルトンパターンになると考えている$this->_mysql

を使う必要はありません。 Userクラスは、同じようにそのオブジェクトに話でのMySQLdbクラスのメソッドを使用します。これらの行に

$results = MySQLDB::instance()->query(whatever);

か何かを。一部の人々は、グローバル$dbオブジェクトを使用して、そのクラスで使用しています(私はそれを否定していません)が、これについていくつかの方法があります。あなたが正しいものを選んだかどうかはわかりません。

編集: グローバル$ DBを使用して、このようなユーザーデータを取得することができます。

class cUser { 

    private $_name; 
    private $_email; 
    private $_password; 

    public function getUser($username) { 
     global $db; 

     return $db->query(whatever); 
    } 
} 
+0

hmm ..しかし、私はMySQLクラスからユーザーを継承しない場合、どのように私は接続が必要なgetUser関数を呼び出すことができますか? – n00bi3

+0

@ n00bi3私は私の答えを更新しました –

+0

私はコードを変更しました。もう一度お手伝いできますか? – n00bi3

関連する問題