このページの翻訳:
- 日本語 (ja)
- English (en)
最近の更新
Tag Cloud
このページへのアクセス
今日: 5 / 昨日: 0
総計: 286
- Dokuwiki.fl8.jp(474)
- 13 CentOS6メール設定(23)
- FreeBSD カーネル再構築(22)
- 34 UnboundでHA構成(20)
最近の更新
このページへのアクセス
今日: 5 / 昨日: 0
総計: 286
<?php
class Database
{
public static $conf = array(
'host' => '[host]',
'db' => '[db_name]',
'user' => '[db_user]',
'password' => '[db_password]',
'charset' => 'utf8',
);
static $_instance;
private function __construct() {
try{
//$this->getConf();
$dsn_basic = 'mysql:host=' . static::$conf['host'] . ';dbname='.static::$conf['db'];
$this->_db = new PDO($dsn_basic, static::$conf['user'], static::$conf['password'], array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8') );
$this->_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(Exception $e){
echo static::$conf['host'] . " connection error";
exit;
}
}
private function __clone(){}
public static function getDb() {
if (!(self::$_instance instanceof self)) {
self::$_instance = new self();
}
//return self::$_instance;
return self::$_instance->_db;
}
public function query($sql) {
return query($this->_db,$sql);
}
}
<?php require_once('lib/Database.php'); Database::$conf['host']='[host_name]'; $dbh = Database::getDb();
static, self が利用できないので、クラス名をそのまま書く必要があります。
5.1, 5.3 の両環境で利用する場合は、下記のように書いておくと両方で利用する事ができます。
<?php
class Database
{
public static $conf = array(
'host' => '[host]',
'db' => '[db_name]',
'user' => '[db_user]',
'password' => '[db_password]',
'charset' => 'utf8',
);
static $_instance;
private function __construct() {
try{
//$this->getConf();
$dsn_basic = 'mysql:host=' . Database::$conf['host'] . ';dbname='.Database::$conf['db'];
$this->_db = new PDO($dsn_basic, Database::$conf['user'], Database::$conf['password'], array(PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8') );
$this->_db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
}catch(Exception $e){
echo Database::$conf['host'] . " connection error";
exit;
}
}
private function __clone(){}
public static function getDb() {
if (!(Database::$_instance instanceof self)) {
Database::$_instance = new Database();
}
//return Database::$_instance;
return Database::$_instance->_db;
}
public function query($sql) {
return query($this->_db,$sql);
}
}