2012-07-31 68 views
1

我在一個類中有一個mySQL對象,它位於外部文件中(以便從其他幾個文件訪問它)。我怎樣才能讓我的Singleton對象從我的文件dbconnection.php:如何從PHP中的外部文件創建對象

<?php 
class DBConnection { 

    private static $instance; 

    private function __construct() { 
    $user="root"; 
    $password=""; 
    $database="klb"; 
    mysql_connect("localhost",$user,$password); 
    @mysql_select_db($database) or die("Unable to select database"); 
} 

    public function __destruct() { 
     mysql_close(); 
} 

    public static function getInstance() { 

    if(!self::$instance) { 
     self::$instance = new self(); 
    } 

    return self::$instance; 
    } 

    public function getNaviForCategory($category) { 
    $query="SELECT * FROM projects WHERE category=\"$category\""; 
    $result=mysql_query($query); 
    $num=mysql_numrows($result); 
    while ($row = mysql_fetch_object($result)) { 
     $title=$row->title; 
     $id=$row->id; 
     echo "<div class=\"sublink\" data-subsite=\"$id\" data-category=\"$category\" data-title=\"$title\" ><a href=\"#\">$title<br />"; 
    } 
    } 

public function getInfosForProject($id) { 
    $query="SELECT * FROM projects WHERE id=\"$id\""; 
    $result=mysql_query($query); 
    $num=mysql_numrows($result); 

    while ($row = mysql_fetch_object($result)) { 
     $infos=$row->info; 
     echo $infos; 
    } 
    } 

    private function createTableProjects(){ 
     $query="CREATE TABLE projects (id int(6) NOT NULL auto_increment,category varchar(30) NOT NULL,title varchar(30) NOT NULL, 
     info varchar(200) NOT NULL,text varchar(8000) NOT NULL,PRIMARY KEY (id),UNIQUE id (id))"; 
     mysql_query($query); 
    } 
} 

?> 

回答

3

您需要include()require()文件第一:

require('dbconnection.php'); 

然後,你可以這樣做:

$db = DBConnection::getInstance(); 
+0

但是,如果每次我創建一個新的單例文件時都包含這個文件,不是嗎? – 4ndro1d 2012-07-31 18:46:17

+0

不,因爲您應該使用'require_once'來確保文件只包含/需要一次(即使您有10次調用具有相同文件名的'require_once()',也只包含一個副本)。 – nickb 2012-07-31 18:49:04