Область видимости переменной в PHP5 с mysqli - PullRequest
0 голосов
/ 08 октября 2011
<?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 имеет другую переменную scope-rules?

1 Ответ

0 голосов
/ 08 октября 2011

Правила видимости отличаются от других языков, таких как Perl, это правда.

Я предлагаю следующий класс БД в стиле Singelton:

<?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();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...