我正在尝试优化我的PHP代码,我想为PDO连接设置一个单件工厂。让我先解释一下我目前的情况。
我有一个带有一堆函数的functions.php,几乎每个页面的顶部都有
include 'functions.php';
就像很多人为他们的网站做的那样。其中一个功能是我的PDO连接,如下所示:
function db_connect(){
$host = 'localhost';
$port = 3306;
$database = 'mybigdb';
$username = 'user11';
$password = 'password1';
$dsn = "mysql:host=$host;port=$port;dbname=$database";
$db = new PDO($dsn, $username, $password);
return $db;
}
在我需要数据库连接的每个函数中,我都会这样:
function fetch_row($param1, $param2, $db=NULL){
if(is_null($db))$db=db_connect();
//Rest of code here
}
这样我就可以传递我的数据库对象,但是如果它没有被包含的话就添加它。上面的代码工作正常,我已经使用了一段时间。但是,阅读有关Singleton Factory课程的内容并考虑这可能更好。
我看了this answer about Singleton factories,但我不太清楚如何使用它。我对课程很有兴趣并且正在努力学习。我有一些问题......
非常感谢你的帮助:)
答案 0 :(得分:0)
您可以创建这样的单身。
class Connection {
private static $_con = null;
private function _constructor(){
// here you instantiate de pdo conection
}
public static function GetInstace(){
if ( self::$_con == null )
self::$_con = new Connection();
return self::$_con;
}
}
之后你会做:$db = Connection::GetInstance();