带有mysqli的PHP5变量的范围

时间:2011-10-08 03:57:40

标签: variables scope mysqli

<?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,我也无法在同一个类中的另一个方法中重用此变量!不应该$ db记住之前收到的内容吗?在getDB方法中,它说$ db什么都没有:( PHP有一个不同的变量范围 - 规则?

1 个答案:

答案 0 :(得分: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();