PHP + SQLite3, открыть базу данных внутри функции - PullRequest
0 голосов
/ 25 сентября 2018

У меня есть такая функция:

function write_to_db($foo) {
  $db = new PDO("sqlite:bar.db");
  $query = $db->prepare("INSERT INTO table VALUES (?)");
  $query->bind_param("s", $foo);
  $query->execute();
}

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

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

Редактировать: хорошо, мне сказали, что это лучшая практика, и я думаю, мне не нужно беспокоиться о производительности.

1 Ответ

0 голосов
/ 25 сентября 2018

Да, есть способ сделать это.Вы можете сделать это через объект Singleton.Вы можете найти больше информации о Singleton Pattern .

Так что я сделал простую реализацию этого, что вы хотите сделать.

class SqliteSingleton
{
  private static $connection = null;

  public static function getConnection($path = null){
    if ($this->connection == null) {
      $this->connection = new PDO("sqlite:" . $path);
    }

    return $this->connection;
  }
}

Вы можете использовать егов любом месте.

$connection = SqliteSingleton::getConnection('bar.db');

Также вы можете провести исследование и сделать более эффективный дизайн класса, чем этот.

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