データベース定義ファイル(sqlMapsConfig.xml)
 |
<?php
⁄** * Configクラスはウェブアプリケーションが一番基本的なレベルで動くのに * 必要な基本設定情報を保持します。 * * 追記:このクラスはSingletonデザインパターンで実装されています。 * * @author Darryl Patterson * @copyright Euro RSCG 4D * *⁄ class Config {
var $sessionName; var $sessionKeyName; var $sessionTimeout; var $sessionMaxAge; var $cookieTimeout;
var $dbconn; var $sessionDatabaseName;
var $applicationRoot; var $defaultModule; var $defaultAction; var $language;
var $environmentClassName; var $frontController; var $failedAuthenticationRedirect;
function Config() {
// 設定ファイルから情報を読み込む $configArray = $this->loadConfigInfo();
// アプリケーションルートを読み込む if (isset($configArray['applicationRoot'])){ $this->applicationRoot = $configArray['applicationRoot']; } else { echo "Config::Config(): " . "applicationRoot is undefined."; exit(); }
// デフォルトモジュールを読み込む if (isset($configArray['defaultModule'])){ $this->defaultModule = $configArray['defaultModule']; } else { $this->defaultModule = 'Default'; }
// デフォルトアクションを読み込む if (isset($configArray['defaultAction'])){ $this->defaultAction = $configArray['defaultAction']; } else { $this->defaultAction = 'defaultAction'; }
// セッション名を読み込む if (isset($configArray['sessionName'])){ $this->sessionName = $configArray['sessionName']; } else { $this->sessionName = 'sessionId'; }
// セッションキーを読み込む if (isset($configArray['sessionKeyName'])){ $this->sessionKeyName = $configArray['sessionKeyName']; } else { $this->sessionKeyName = 'sessionKey'; } // セッションタイムアウト時間を読み込む if (isset($configArray['sessionTimeout'])){ $this->sessionTimeout = $configArray['sessionTimeout']; } else { $this->sessionTimeout = '600'; }
// セッション最大生存時間を読み込む if (isset($configArray['sessionMaxAge'])){ $this->sessionMaxAge = $configArray['sessionMaxAge']; } else { $this->sessionMaxAge = '3600'; }
// cookieタイムアウト時間を読み込む if (isset($configArray['cookieTimeout'])){ $this->cookieTimeout = $configArray['cookieTimeout']; } else { $this->cookieTimeout = '129600'; }
// 言語を読み込む if (isset($configArray['language'])){ $this->language = $configArray['language']; } else { $this->language = 'en'; }
// environmentクラス名を読み込む if (isset($configArray['environmentClassName'])){ $this->environmentClassName = $configArray['environmentClassName']; } else { $this->environmentClassName = 'Environment'; }
// フロントコントローラ名を読み込む if (isset($configArray['frontController'])){ $this->frontController = $configArray['frontController']; } else { $this->frontController = 'app'; }
// 認証失敗時のリダイレクトURLを読み込む if (isset( $configArray['failedAuthenticationRedirect'])){ $this->failedAuthenticationRedirect = $configArray['failedAuthenticationRedirect']; } else { $this->failedAuthenticationRedirect = '/'.$this->frontController.'/Default'; }
// デフォルトのデータベース接続情報 $dbuser = 'guest'; $dbpass = ''; $dbname = 'common'; $dbhost = 'localhost'; $dbtype = 'mysql'; if (isset($configArray['dbuser'])){ $dbuser = $configArray['dbuser']; } if (isset($configArray['dbpass'])){ $dbpass = $configArray['dbpass']; } if (isset($configArray['dbname'])){ $dbname = $configArray['dbname']; } if (isset($configArray['dbhost'])){ $dbhost = $configArray['dbhost']; } if (isset($configArray['dbtype'])){ $dbtype = $configArray['dbtype']; }
$this->dbconn = mysql_connect($dbhost, $dbuser, $dbpass); mysql_select_db($dbname, $this->dbconn); }
⁄** * スタティック関数が呼ばれていることになります。 * Config::instance() * * @return Config * @access public * @static *⁄ function &instance() { if (is_a($GLOBALS['__configInstance__'], 'Config')) { return $GLOBALS['__configInstance__']; }
if (isset($_SERVER['configClassName'])) { $classFilename = 'class-'. $_SERVER['configClassName'].'.php'; ⁄** * 開発者がアプリケーション特有のConfigクラスを 定義しているか確認。 * フレームワークのConfigクラスのサブクラスである必要あり。 * 見つからなければ、フレームワークの Configクラスインスタンスを作成。 *⁄ if (@fopen($classFilename,'r',true)) { require_once($classFilename); $GLOBALS['__configInstance__'] = new $_SERVER['configClassName'](); } else { $GLOBALS['__configInstance__'] = new Config(); } } else { die('Config::instance(): configClassName ' . 'not set in Apache config.'); }
return $GLOBALS['__configInstance__']; }
// アクセサメソッド
function getSessionName() { return $this->sessionName; }
function getSessionKeyName() { return $this->sessionKeyName; }
function getSessionTimeout() { return $this->sessionTimeout; }
function getSessionMaxAge() { return $this->sessionMaxAge; }
function getCookieTimeout() { return $this->cookieTimeout; }
function getEnvironmentClassName() { return $this->environmentClassName; }
function getDBConnection() { return $this->dbconn; }
⁄** * 設定ファイルから設定情報を読み込む。 * 設定ファイルのパスはApacheの設定を使用 * SetEnv configFilePath /path/to/config/directory/ * * @return array * @access private *⁄ function loadConfigInfo() { $configArray = array();
$configFilePath = $_SERVER['configFilePath'] . $_SERVER['HTTP_HOST'] . '.config';
$configLines = file($configFilePath);
if ($configLines === false){ echo 'Error loading Config info.'; exit; }
foreach($configLines as $line){ if (trim($line) == '' || substr($line, 0, 1) == '#'){ continue; }
list($key, $val) = explode('=', $line); $configArray[trim($key)] = trim($val); }
return $configArray; }
} ?>
|
|
 |