2011-08-02 145 views
0

我有一個類,我想包括幾個db例程而不是內聯。PHP類數據庫連接

class Classica{ 

public $dbhost; 
public $dbname; 
public $dbuser; 
public $dbpass; 


__function construct(){ 
    //hook connectdb() upon contruct. 
} 

#connect to database 
    public function connectdb($dbhost,$dbname,$dbuser,$dbpass){   

     $link = mysql_connect($dbhost,$dbuser,$dbpass); 
     if (!$link) { 
      die('Could not connect: ' . mysql_error()); 
     }else { 
      //echo 'Connected Successfully to Database<br>'; 
     } 
     @mysql_select_db($dbname) or die("Unable to select database"); 
    } 

    #read database 
    function readdb(){   
    }  
    #update database 
    private function updatedb(){   
    } 
    #close database connection 
    function closedb(){ 
     mysql_close();  
    } 

} 

的config.php

$dbhost = 'localhost'; 
$dbname = 'dem'; 
$dbuser = 'root'; 
$dbpass = ''; 

的index.php

<?php 
error_reporting(E_ALL^E_WARNING^E_NOTICE); 
session_start(); 
include('config.php'); 
include('classica.php'); 
$obj = new classica(); 

?> 

數據庫連接的詳細信息,我會想,以保持其上包括在文檔中的單獨的配置文件加載。

我遇到的問題是:在類中

檢索數據庫配置值。 嘗試附加一個單獨的數據庫類以從父項分離。

任何關於方法和/或解決方案的建議。

+0

你可以搜索PDO單身人士。 – hornetbzz

回答

0

最簡單的方法是在connectdb函數(或調用它的函數)內執行include('config.php')。當你的include是一個PHP文件(記得包含<?php打開標籤!)時,變量將在包含函數的範圍內聲明。舉例來說,__construct()(注意你有一個錯字)可能是:

function __construct() { 
    include('config.php'); 
    $this->connectdb($dbhost,$dbname,$dbuser,$dbpass); 
} 
1

您可以設置配置變量在global scope

public function __construct() 
{ 
    global $dbhost, $dbname, etc... ; 
    $this->connectdb($dbhost, $dbname, etc...); 

或者使用constants,其範圍是全球性的:

的config.php

define('MYAPP_DBHOST', 'localhost'); 
define('MYAPP_DBNAME', 'dem'); 

和類:

public function __construct() 
{ 
    $this->connectdb(MYAPP_DBHOST, MYAPP_DBNAME, etc...);