Ethna_Controller::Ethna_Controller
/**
* Ethna_Controllerクラスのコンストラクタ
*
* @access public
*/
function Ethna_Controller($gateway = GATEWAY_WWW)
{
$GLOBALS['_Ethna_controller'] =& $this;
if ($this->base === "") {
// EthnaコマンドなどでBASEが定義されていない場合がある
if (defined('BASE')) {
$this->base = BASE;
}
}
$this->gateway = $gateway;
// クラス設定の未定義値を補完
foreach ($this->class_default as $key => $val) {
if (isset($this->class[$key]) == false) {
$this->class[$key] = $val;
}
}
// ディレクトリ設定の未定義値を補完
foreach ($this->directory_default as $key => $val) {
if (isset($this->directory[$key]) == false) {
$this->directory[$key] = $val;
}
}
// クラスファクトリオブジェクトの生成
$class_factory = $this->class['class'];
$this->class_factory =& new $class_factory($this, $this->class);
// エラーハンドラの設定
Ethna::setErrorCallback(array(&$this, 'handleError'));
// ディレクトリ名の設定(相対パス->絶対パス)
foreach ($this->directory as $key => $value) {
if ($key == 'plugins') {
// Smartyプラグインディレクトリは配列で指定する
$tmp = array();
foreach (to_array($value) as $elt) {
if (Ethna_Util::isAbsolute($elt) == false) {
$tmp[] = $this->base . (empty($this->base) ? '' : '/') . $elt;
}
}
$this->directory[$key] = $tmp;
} else {
if (Ethna_Util::isAbsolute($value) == false) {
$this->directory[$key] = $this->base . (empty($this->base) ? '' : '/') . $value;
}
}
}
// 初期設定
list($this->language, $this->system_encoding, $this->client_encoding) = $this->_getDefaultLanguage();
$this->config =& $this->getConfig();
$this->dsn = $this->_prepareDSN();
$this->url = $this->config->get('url');
// プラグインオブジェクトの用意
$this->plugin =& $this->getPlugin();
//// assert (experimental)
//if ($this->config->get('debug') === false) {
// ini_set('assert.active', 0);
//}
// ログ出力開始
$this->logger =& $this->getLogger();
$this->plugin->setLogger($this->logger);
$this->logger->begin();
// Ethnaマネージャ設定
$this->_activateEthnaManager();
}