1 nailed connection
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 add more freedom
class sqlClass {
private $_connection = null;
public function __construct($params) {
$this->_connection = new SomeConnection($params);
}
public function query($query) {
return $this->_connection->query();
}
}
3.1 either add lazyness
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 either add dependency injection
class sqlClass {
private $_connection = null;
public function __construct(SomeConnection $connection) {
$this->_connection = $connection;
}
public function query($query) {
return $this->_connection->query($query);
}
}
4 Move lazyness to connection class and use dependency injection
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);
}
}
With OOP you do not have to close connection manually: http://php.net/manual/en/features.gc.php