2011-10-08 95 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();