我想知道使用PHPOO建立数据库连接的更好方法是什么。
如果我在__construct上设置了连接并在__destruct上关闭了连接,我会建立太多无用的连接吗?
例如,我的类称为“ sqlClass”,它具有一些方法。
所以..让我们实例化这个类...
$myObj = new sqlClass(); // mysql_connect and mysql_close executed here...
$myObj->insertData(); // mysql_connect and mysql_close executed here again...
我应该将连接分开吗?
1个钉子连接
class sqlClass {
private $_connection = null;
public function __construct() {
$this->_connection = new SomeConnection(array('param1', 'param2', 'param3'));
}
public function query($query) {
return $this->_connection->query();
}
}
2增加更多的自由
class sqlClass {
private $_connection = null;
public function __construct($params) {
$this->_connection = new SomeConnection($params);
}
public function query($query) {
return $this->_connection->query();
}
}
3.1要么增加懒惰
class sqlClass {
private $_connection = null;
private $_params = null;
public function __construct($params) {
$this->_params = $params
}
public function query($query) {
if ($this->_connection === null)
$this->_connection = new SomeConnection($this->_params);
return $this->_connection->query($query);
}
}
3.2要么添加依赖项注入
class sqlClass {
private $_connection = null;
public function __construct(SomeConnection $connection) {
$this->_connection = $connection;
}
public function query($query) {
return $this->_connection->query($query);
}
}
4将懒惰移到连接类并使用依赖项注入
class LazyConnection extends SomeConnection{
private $_params = null;
private $_inited = false;
public function __construct($params){
$this->_params = $params;
}
public function query($query){
if (!$this->_inited){
parent::__construct($this->_params);
$this->_inited = true;
}
parent::query($query);
}
}
使用OOP,您不必手动关闭连接:http : //php.net/manual/en/features.gc.php
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句