2011-10-08 66 views
0
<?php 
    class UBC_DB 
    { 
     private $db; 


    public function connect() 
    { 
     $db = new mysqli('localhost', 'root', 'root', 'NewsTable'); 
    } 

    public function getDB() 
    { 
     if(!$db) 
     { 
      printf("Can't connect to MySQL Server. ErrorCode: %s\n", mysqli_connect_error()); 
      exit; 
     } 
    } 
} 

$api = new UBC_DB(); 
$api->connect(); 
$api->getDB(); 
?> 

你好,PHP的大師。 我在這裏有一個問題,需要你的幫助... 我想做一個很好的整潔的類來處理數據庫連接...但是,即使該數據庫連接成功,並返回適當的結果爲 $ db,我不能在同一個類的另一個方法中重用這個變量! $ db不應該記得之前收到的內容嗎?在getDB方法,它說:$ DB無關:?(PHP有不同的變量範圍的規則PHP5中變量的範圍與mysqli

回答

0

的作用域規則是不是如Perl等語言不同,它是真正的

我建議以下singelton-風格的DB類:

<?php 
    class UBC_DB 
    { 
     private static $db; 


    private static function connect() 
    {  
     self::$db = new mysqli('localhost', 'root', 'root', 'NewsTable');  
    } 

    public static function getDB() 
    { 
     if(!self::$db) 
     { 
      self::connect(); 
     } 
     return self::$db; 
    } 
} 


$db = UBC_DB::getDB();