cakePHP2.*で簡単にデータベース(database.php)設定を切り替える方法

公開日: : Web制作

cakePHP2.0で実験しました。
内容はhttp://blog.imho.jp/2014/05/cakephp-2xdatabasephp.htmlを改良しました。ありがとうございます。といってもPHP5.3以降で非推奨となった関数eregをpreg_matchに変えるだけですが。

class DATABASE_CONFIG {

public $default = null;

public $dev = array(
‘datasource’ => ‘Database/Mysql’,
‘host’ => ‘localhost’,
‘login’ => ‘root’,
‘password’ => ”,
‘database’ => ‘m4m’,
‘encoding’ => ‘utf8′,
‘persistent’ => false,
‘prefix’ => ”,
);

public $ebs3 = array(
‘datasource’ => ‘Database/Mysql’,
‘host’ => ‘localhost’,
‘login’ => ‘root’,
‘password’ => ”,
‘database’ => ‘eb3′,
‘encoding’ => ‘utf8′,
‘persistent’ => false,
‘prefix’ => ”,
);

public $m4m = array(
‘datasource’ => ‘Database/Mysql’,
‘host’ => ‘localhost’,
‘login’ => ‘root’,
‘password’ => ”,
‘database’ => ‘m4m’,
‘encoding’ => ‘utf8′,
‘persistent’ => false,
‘prefix’ => ”,
);

public function __construct(){
App::uses(‘Folder’, ‘Utility’);

//if file named USE_DATABASE_CONFIG_name exists, use DATABASE_CONFIG.name as default config
//if multiple USE_DATABASE_CONFIG_* files found, use the first one.
$dir_path = ROOT . DS . APP_DIR . DS . ‘Config’ . DS;
$dir = new Folder($dir_path);
$f = $dir->find(‘USE_DATABASE_CONFIG_.*’, true);
if (count($f)<=0) { //using default(dev) setting if USE_DATABASE_CONFIG_* is not found. $this->default = $this->dev;
return;
} else {
//using default(dev) setting if USE_DATABASE_CONFIG_* is not found.
//fetch config name
preg_match(‘/USE_DATABASE_CONFIG_(.*)/’, $f[0], $ret);
$config_name = $ret[1];
if (isset($this->{$config_name})) {
$this->default = $this->{$config_name};
} else {
//use default(dev) configuration if accoumpanied configuration is not found
$this->default = $this->dev;
}
return;
}
}
}

・使い方(元記事ではイマイチよくわからなかったので補足)
database.phpに__construct()等を追加して、
「app/Config」ディレクトリに「USE_DATABASE_CONFIG_m4m」(拡張子なし)を入れておくと、$m4mに接続。
つまり「USE_DATABASE_CONFIG_ebs3」(拡張子なし)を入れておくと、$ebs3に接続。
「USE_DATABASE_CONFIG_~」を入れてないと$devに接続する具合です。

「いちいち設定しなおすのは面倒だ」という方におすすめです~。
ファイル名をリネームするだけで簡単にデータベース設定を切り替えることができますね!

Twitter(@R_farms)でブログの更新情報をお伝えしています。
フォローしていただけると嬉しいです!

このカテゴリの記事

iPhoneアプリを開発してみよう

最近ずっとiPhoneアプリで遊んでて、 「なんか頭使うゲームないな?」と思い("本質的には育成ゲ

記事を読む

まとめ読み バージョン1.1.1のリリース

フリーソフト「まとめ読み」バージョン1.1.1のリリースを行いました。 まとめ読み ダウンロー

記事を読む

現代PHPの正しい道「PHP: The Right Way」の紹介とその要約

時代遅れの本や情報があふれている。そのため「何年前のコレ?」というコードが広まっている。 私も

記事を読む

まとめ読み バージョン1.1.0のリリース

フリーソフト「まとめ読み」バージョン1.1.0のリリースを行いました。 まとめ読み ダウンロー

記事を読む

C言語およびC++のコンパイラMinGWのインストールとテスト

Windows環境でCとC++を開発するためのコンパイラ「MinGW」のインストールを行います。

記事を読む

まとめ読み(matomeyomi ver 1.0)公開開始

「2ちゃんねるのまとめサイト」のまとめサイトなど、ブログのまとめサイトが作れる、まとめ読み(mato

記事を読む

PHPのコーディング規則、PSRを学ぶ(3)

PHPのコーディング規則、PSRを学ぶ(2)の続きです。 今回はPSR-0, 1, 2を日本語に翻

記事を読む

[PHP]PDO、2つ以上の項目からLIKE検索

データベースからPDOを使ってデータを抜き出したい! そして「bindParam」で安全に検索

記事を読む

Cで簡単プログラミング「二次関数の解」

C言語で簡単なプログラミングをしましょう! 今回は「二次関数の解」です。 ↓Cはコンパイル(

記事を読む

ユーザーのフォントを統一できる、Google Fontsの紹介

Web制作で困ることが多いのは「ユーザー全員が使えるフォントがない」ことでしょう。 ユーザーの

記事を読む

指示待ち人間の作り方

「指示待ち人間ばかりで困る」と思いませんか? さて、それをど

あなたの仕事は楽しいですか?

あなたの仕事は楽しいですか? ・・・いきなりなんだよと思った

始まりと終わり

終わりを決めましょう! 皆様、お久しぶりです。 2018年

黒い砂漠 KNスキル考察(17/11/16版)

なんかこれしか書いてないので新しく作りました。 黒い砂漠のメイン

swiftでゲームプログラミング(開始前)

iPhoneアプリを開発するために必要な言語「Swift」 そう

→もっと見る

PAGE TOP ↑