内容へ移動
fl8 Wiki
ユーザ用ツール
ログイン
サイト用ツール
検索
ツール
文書の表示
以前のリビジョン
バックリンク
最近の変更
メディアマネージャー
サイトマップ
ログイン
>
最近の変更
メディアマネージャー
サイトマップ
現在位置:
Dokuwiki.fl8.jp
»
11_php
»
05_class
»
02 DB接続(Singleton)
トレース:
•
02 Chrome拡張機能2
•
14 Windows ファイルシステム制限
•
70 WordPress + PostgreSQL
•
APC Switched Rack PDU
•
22 Plesk autoinstaller3.log
•
13 Ubuntu 古いzabbix
•
06 Plesk 自動更新
11_php:05_class:02_db_singleton
この文書は読取専用です。文書のソースを閲覧することは可能ですが、変更はできません。もし変更したい場合は管理者に連絡してください。
====== 02 DB接続(Singleton) ====== ===== DB接続Class ===== <code php> <?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); } } </code> ===== 呼び出し側 ===== <code php> <?php require_once('lib/Database.php'); Database::$conf['host']='[host_name]'; $dbh = Database::getDb(); </code> ===== PHP 5.3未満の場合 ===== static, self が利用できないので、クラス名をそのまま書く必要があります。 5.1, 5.3 の両環境で利用する場合は、下記のように書いておくと両方で利用する事ができます。 <code:php> <?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); } } </code>
11_php/05_class/02_db_singleton.txt
· 最終更新: 2015/11/06 07:32 by
matsui
ページ用ツール
文書の表示
以前のリビジョン
バックリンク
文書の先頭へ