2012-07-31 88 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