2007年10月6日土曜日

PDOでDSNのエイリアスを使う方法

PDOを生成する時はDSNのエイリアスを使うのが一番スマートだと思う。

一般的なPDOの生成方法

$dsn = 'mysql:dbname=testdb;host=127.0.0.1';
$user = 'dbuser';
$password = 'dbpass';
$dbh = new PDO($dsn, $user, $password);

エイリアスを使うPDOの生成方法
php.iniに下記の記述をしておく。"pdo.dsn."の後ろがDSNのエイリアスになる。
[PDO]
pdo.dsn.mydb="mysql:dbname=testdb;host=localhost"
そうすると$dsnとして下記のようにエイリアスを指定できる。
$dsn = 'pdo_dsn';
$dbh = new PDO($dsn);

エイリアスを使うメリット
  • 複数の環境(開発環境と本番環境とか)で別のDB接続情報を使う場合に、PHPソースを変更せずに済む。
  • DB接続情報の定義場所が分かりやすい。
  • ディレクトリセキュリティの掛け方によっては、DB接続情報を隠蔽できる。
(2007/10/11 追記
 MySQLの場合、ユーザー・パスワードはDSNに含められないようです。
 参考:[ThinkIT] 第1回:PDOの概要 (3/3)びーこん:PDO MySQL (PHP PECL) - livedoor Blog(ブログ)

エイリアスを使うデメリット
  • DB接続情報を変更するたびにWebサーバの再起動が必要。
  • DB接続情報の種類が多い場合に柔軟に対応できない。(dbnameだけ変えるとか。)命名規則を決めれば対応できるけど。


参考:PHP: PDO->__construct() - Manual

0 件のコメント:

ブログ アーカイブ

tags