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