我有这样的功能:
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脚本期间不需要多次打开和关闭文件?
将数据库作为参数发送不是一个选择,因为该函数与类和其他函数一起调用,然后我需要使所有这些对象都知道数据库。
编辑:好的,我被告知这是最佳做法,我想我不必担心性能。
答案 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');
除此之外,您还可以进行研究并做出更有效的类设计。