====== 02 DB接続(Singleton) ====== ===== DB接続Class ===== '[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 5.3未満の場合 ===== static, self が利用できないので、クラス名をそのまま書く必要があります。 5.1, 5.3 の両環境で利用する場合は、下記のように書いておくと両方で利用する事ができます。 '[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); } }