PHP + SQLite3,在函数内部打开数据库

时间:2018-09-25 10:19:32

标签: php sqlite

我有这样的功能:

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

是的,有办法做到这一点。您可以通过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');

除此之外,您还可以进行研究并做出更有效的类设计。