2012-12-03 68 views
-1

我試圖創建一個數據庫連接類,我的所有模型都將從此擴展而來。不返回來自自定義數據庫類的PDO對象

的問題是,是,它沒有返回即使我告訴它返回PDO連接對象的數據庫對象:

class Database {

protected $conn ; 
public $user ; 
public $pass ; 
public $database ; 
public $encoding ; 

function __construct($user = 'user', $pass = 'pass', $database = 'view4', $host = 'localhost', $encoding = 'UTF8') 
{ 
    try { 
     $this->user = $user ; 
     $this->pass = $pass ; 
     $this->database = $database ; 
     $this->encoding = $encoding ; 

     $options = array(
        'PDO::ATTR_ERRMODE' => 'PDO::ERRMODE_WARNING', 
        'PDO::ATTR_PERSISTENT' => TRUE, 
        'PDO::ATTR_DEFAULT_FETCH_MODE' => 'PDO::FETCH_ASSOC', 
        'PDO::ATTR_EMULATE_PREPARES' => FALSE, 
        ) ; 

     $this->conn = new PDO('mysql:host='.$host.';dbname='.$this->database, 
           $this->user, 
           $this->pass, 
           $options 
          ) ; 
     $this->conn->exec('SET NAMES '.$this->encoding) ; 
     return $this->conn ; 
    } catch(PDOException $e) { 
     $this->handleError($e) ; 
    } 
} 

protected function handleError($e) 
{ 
    if(strstr($e->getMessage(), 'SQLSTATE[')) { 
     preg_match('/SQLSTATE\[(\w+)\] \[(\w+)\] (.*)/', $e->getMessage(), $matches); 
     $code = ($matches[1] == 'HT000' ? $matches[2] : $matches[1]).': '; 
     echo $message = $code.$matches[3] ; 
     return false ; 
    } 
} 

}

它給我的錯誤:

Fatal error: Call to undefined method Database::query() in C:\xampp\htdocs\IMS4\libs\Database.php on line 52 

我在做什麼錯了?

+0

你打開服務器上的PDO擴展嗎? – vodich

+0

@vodich是的。 – imperium2335

+0

並且數據庫 - >查詢確實存在?你的錯誤說未定義的方法 – vodich

回答

2

您不能構造函數return任何東西。在編寫new Database時,無論您從構造函數返回什麼,您都會得到一個Database對象。

相關問題