2011-08-02 66 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...);