/** * DBオブジェクトを返す * * @access public * @param string $db_key DBキー * @return mixed Ethna_DB:DBオブジェクト null:DSN設定なし Ethna_Error:エラー * @todo この中でnewしないでclass factoryを利用する */ public function getDB($db_key = "") { $null = null; $db_varname = $this->_getDBVarname($db_key); if (Ethna::isError($db_varname)) { return $db_varname; } if (isset($this->db_list[$db_varname]) && $this->db_list[$db_varname] != null) { return $this->db_list[$db_varname]; } $dsn = $this->controller->getDSN($db_key); if ($dsn == "") { // DB接続不要 return $null; } $dsn_persistent = $this->controller->getDSN_persistent($db_key); $class_factory = $this->controller->getClassFactory(); $db_class_name = $class_factory->getObjectName('db'); // BC: Ethna_DB -> Ethna_DB_PEAR if ($db_class_name == 'Ethna_DB') { $db_class_name = 'Ethna_DB_PEAR'; } if (class_exists($db_class_name) === false) { $class_factory->_include($db_class_name); } $this->db_list[$db_varname] = new $db_class_name($this->controller, $dsn, $dsn_persistent); $r = $this->db_list[$db_varname]->connect(); if (Ethna::isError($r)) { $this->db_list[$db_varname] = null; return $r; } register_shutdown_function(array($this, 'shutdownDB')); return $this->db_list[$db_varname]; }
public function setup() { parent::setup(); $this->controller = $this->prophesize("Ethna_Controller"); $this->config = $this->prophesize("Ethna_Config"); $this->i18n = $this->prophesize("Ethna_I18N"); $this->action_error = $this->prophesize("Ethna_ActionError"); $this->action_form = $this->prophesize("Ethna_ActionForm"); $this->action_class = $this->prophesize("Ethna_ActionClass"); $this->session = $this->prophesize("Ethna_Session"); $this->plugin = $this->prophesize("Ethna_Plugin"); $this->logger = $this->prophesize("Ethna_Logger"); $this->class_factory = $this->prophesize("Ethna_ClassFactory"); $this->controller->getClassFactory()->willReturn($this->class_factory); $this->controller->getConfig()->willReturn($this->config); $this->controller->getI18N()->willReturn($this->i18n); $this->controller->getActionError()->willReturn($this->action_error); $this->controller->getActionForm()->willReturn($this->action_form); $this->controller->getSession()->willReturn($this->session); $this->controller->getPlugin()->willReturn($this->plugin); $this->controller->getLogger()->willReturn($this->logger); }
function setUp() { $ctl = new Ethna_Controller(); $this->cf = $ctl->getClassFactory(); }