PHP类DB连接

时间:2011-08-02 20:59:57

标签: php mysql oop classloader

我有一个类,我想包括几个db例程而不是内联。

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();

?>

数据库连接详细信息我想在单独的配置文件中维护,该文件包含在文档加载中。

我遇到的问题:

检索类中的数据库配置值。 尝试附加一个单独的数据库类以与父文件分开。

任何方法和/或解决方案的建议。

3 个答案:

答案 0 :(得分: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...);

答案 1 :(得分:0)

最简单的方法是在connectdb函数(或调用它的函数)中执行include('config.php')。当你include一个PHP文件时(记得包含<?php open标签!),变量将在包含的函数范围内声明。例如,__ construct()(注意你有一个错字)可能是:

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

答案 2 :(得分:0)

您是否在询问如何从配置文件中读取?试试'parse_ini_file'。 http://php.net/manual/en/function.parse-ini-file.php