Вопрос, как это сделать?
Есть такой метод, $db->getInstance(), которая позволяет раз соединиться с БД и потом передавать ссылку на это соединение, на этот объект.
В примере такое соединеие создается при помощи PDO:
PHP:
<php
class db {
/**
* Holds an insance of self
* @var $instance
*/
private static $instance = NULL;
/**
*
* Return DB instance or create intitial connection
*
* @return object (PDO)
*
* @access public
*
*/
public static function getInstance()
{
if (!self::$instance)
{
$config = config::getInstance();
$db_type = $config->config_values['database']['db_type'];
$hostname = $config->config_values['database']['db_hostname'];
$dbname = $config->config_values['database']['db_name'];
$db_password = $config->config_values['database']['db_password'];
$db_username = $config->config_values['database']['db_username'];
$db_port = $config->config_values['database']['db_port'];
$db_encoding = $config->config_values['database']['db_encoding'];
$driver_options = array();
if($db_type == 'mysql')
$driver_options[PDO::MYSQL_ATTR_INIT_COMMAND] = 'SET NAMES '.$db_encoding;
self::$instance = new PDO("$db_type:host=$hostname;port=$db_port;dbname=$dbname", $db_username, $db_password, $driver_options);
}
return self::$instance;
}
?>
Соответственно, вызов соединения с БД в модели (модель не знает, открыто соедиение или нет):
PHP:
<?php
class newsModel extends db {
private $db;
public function __construct() {
$this->db = db::getInstance(); // connect to database
}
// .....
?>
Вопрос: можно ли реализовать соединение с БД MySQL, записать это соединение в объект и потом отдавать его в методе getInstance().
Конструкция типа приведенной ниже, я так понимаю объекта не создаст:
PHP:
<php
class db {
private static $instance = NULL;
public static function getInstance()
{
if (!self::$instance)
{
self::$instance = mysql_select_db($db, mysql_connect($host,$user,$password));
}
return self::$instance;
}
?>
Как записать в объект текущее соeдинение с БД MySQL (созданное функциями mysql_select_db(), mysql_connect() )?