2013-03-14 3 views
0

Я хочу знать, есть ли способ, которым всегда есть одно открытое соединение в моей базе данных. я использую эти коды в моих сайтах:только одно соединение mysql во всем проекте

MySQL класс

class Mysql{ 
public static $Server = "localhost"; 
static $User = 'root'; 
static $Password = ''; 
static $DataBaseName = 'teca.v1'; 
static $Connection; 
static $DataBase; 
static $LoadConnection = 0; 
static $CharSet = "utf8"; 

static $TRANS =false; 
static $TRSS = array(); 

public function __construct(){ 
    if(Mysql::$LoadConnection==0){ 
     Mysql::$Connection = mysql_connect(Mysql::$Server,Mysql::$User,Mysql::$Password); 
     Mysql::$DataBase = mysql_select_db(Mysql::$DataBaseName,Mysql::$Connection); 
     $charset=Mysql::$CharSet; 
     mysql_query("SET NAMES $charset"); 
     Mysql::$LoadConnection=1; 
    } 
} 
} 

модель класса

class Model extends Mysql{ 
protected $datamembers = array(); 
protected $PrimaryKey="Id"; 
protected $TableName ="Table"; 
public $UnProtectedExecute = FALSE; 

public function ReadyString($value) 
{ 
    if($this->UnProtectedExecute == TRUE) 
     return addslashes($value); 
    else 
     return $value; 
} 
public function __set($variable, $value){ 
    $this->datamembers[strtolower($variable)] = $value; 
} 

public function __get($variable){ 
    return $this->datamembers[strtolower($variable)]; 
} 

и один из моих объектов:

class LibraryFiles extends Model{ 
    public $TableName = 'library_files'; 
} 

, но я не знаю, это право, и именно этот код создает 1 соединение для всего объекта в моем проекте?

+0

Его наследование .... –

+0

Да, мои объекты все наследуются от класса модели и модели от mysql –

+0

Да и из-за этого он вызывает свой метод-конструктор и создает соединение mysql. –

ответ

1

Что вы ищете для базы данных PHP Singleton Database. Используйте приведенные ниже ссылки, чтобы получить эту идею. Наверное, мне не нужно повторять все здесь.

http://www.matthewelliston.com/php-singleton-database-class/

Global or Singleton for database connection?

Creating the Singleton design pattern in PHP5

+0

Синглтоны - не очень хорошая идея. Они имеют тенденцию тесно связывать код с синглом, что затрудняет его сохранение с течением времени. – Bart

0

Ваш дизайн не делает очень много смысла. Вы должны создать отдельные классы для MySQL и Model. Класс MySQL должен быть инстанцирован один раз и использоваться по всему сценарию. Поэтому он должен делать только одно соединение. Затем введите Model экземпляр класса MySQL для работы с данными.

Смежные вопросы