Доступ к переменной базы данных в функциях с помощью PHP - PullRequest
0 голосов
/ 24 февраля 2010

Я довольно новичок в PHP и обнаружил, что многие мои функции требуют доступа к базе данных. Проблема в том, что я сейчас подключаюсь к базе данных в файле, который мне нужен вверху каждой страницы, например:

$db = new mysqli("localhost", "my_user", "my_password", "world");

Проблема, которую я нахожу, заключается в том, что когда я хочу получить к ней доступ внутри функции, мне нужно передать ей переменную $ db ... которая работает нормально, но есть ли более простой способ?

Ответы [ 3 ]

0 голосов
/ 24 февраля 2010

Взгляните на доктрину . Есть небольшое увеличение, но это очень приятно.

В противном случае поместите этот код во включаемый файл и include "db.php"; на ваших страницах. Желательно, чтобы у вас был 1 включаемый файл, который содержит все необходимое для вашего сайта, и вы добавляете туда код $db.

Если вы действительно хотите быть быстрым и грязным, сделайте $db глобальным, и вы сможете получить к нему доступ где угодно. Это не очень хорошая практика кодирования.

0 голосов
/ 24 февраля 2010

Самый простой (но не самый лучший) способ - добавить ключевое слово «global» в каждую функцию. Пример:

$db = new mysqli("localhost", "my_user", "my_password", "world");
function foo() {
  global $db;
  $db->query(....
}

Гораздо лучший способ - создать собственный класс My_DB и определить его как синглтон. Тогда вы сможете вызывать объект db как экземпляр My_DB.

class My_DB {
  protected $_db = null;

  protected static $instance = null;

  protected function __construct() {
    $this->_db = new mysqli("localhost", "my_user", "my_password", "world");
  }

  public static function getInstance() {
    if (empty(self::$_instance)) {
      self::$_instance = new self();
    }
    return self::$_instance;
  }
}

И тогда в любом месте вашего кода вы можете сделать следующее:

function foo() {
  $db = My_DB::getInstance();
  $db->query(....
}
0 голосов
/ 24 февраля 2010

Вы можете вызывать их как функции для объекта $db, например, $db->query(...).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...