2011-08-02 5 views
0

클래스가 있는데, 여기에는 인라인 대신 몇 개의 db 루틴이 포함됩니다.PHP 클래스 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(); 

?> 

데이터베이스 연결 정보를 내가 문서에 포함되어 별도의 구성 파일을 유지하기 위해 같은 것 하중.

문제점 나는 데 : 클래스 내부

가져 오는 데이터베이스 설정 값. 부모와 분리하여 별도의 데이터베이스 클래스를 연결하려고합니다.

접근 방법 및/또는 해결 방법에 대한 제안.

+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...);