/** * コントローラーを実行します。 * */ public static function start() { $log = LoggerManager::getLogger(Teeple_Util::getPathInfo()); $log->info("*** リクエストを開始します。"); try { // コンテナの取得 $container = Teeple_Container::getInstance(); //$container->setup(WEBAPP_DIR .'/config/dicon.ini'); // セッションを作成 TODO セッションのパラメータ制御 $session = $container->getComponent("Teeple_Session"); $session->start(); // リダイレクトスコープのリクエスト復元 $request = $session->getParameter("__REDIRECT_SCOPE_REQUEST"); if (is_object($request)) { $request->setActionMethod("execute"); $request->resetCompleteFlag(); $request->isRedirect = TRUE; $container->register("Teeple_Request", $request); $session->removeParameter("__REDIRECT_SCOPE_REQUEST"); } // controllerの実行 $controller = $container->getComponent('Teeple_Controller'); $controller->execute(); } catch (Exception $e) { $txManager = $container->getComponent('Teeple_TransactionManager'); $txManager->rollbackAll(); Teeple_ErrorHandler::handle($e); } return; }
public function setUp() { $this->container = Teeple_Container::getInstance(); $this->actionChain = $this->container->getComponent('Teeple_ActionChain'); $this->request = $this->container->getComponent('Teeple_Request'); $this->container->register('DefaultTx', new StdClass()); $this->response = $this->container->getComponent('Teeple_Response'); }
/** * @return Teeple_Session */ public static function instance() { return Teeple_Container::getInstance()->getComponent(__CLASS__); }
public function setUp() { $this->container = Teeple_Container::getInstance(); }
fwrite(STDERR, "Invalid Parameter."); exit; } $cmpName = $argv[1]; $param = $argv; array_shift($param); array_shift($param); /* * Teeple設定ファイルの読込み */ define('BASE_DIR', dirname(dirname(__FILE__)) . "/webapp"); include_once BASE_DIR . "/config/user.inc.php"; /* * コンテナからComponentを取得 */ $container = Teeple_Container::getInstance(); // デフォルトトランザクションをコンテナに登録 $txManager = $container->getComponent("Teeple_TransactionManager"); $defaultTx = $txManager->getTransaction(); $container->register('DefaultTx', $defaultTx); // 実行するコンポーネントを取得 $component = $container->getComponent($cmpName); if (!is_object($component)) { fwrite(STDERR, "No component found."); exit; } if (count($param) > 0) { $component->_argv = $param; } try { $component->execute();
/** * Migrationを実行します。 * */ public function execute() { $config = $this->dataSource->getDataSourceConfig(); foreach ($config as $name => $dsn) { print "** start migration for {$name}. \n"; $conn = $this->dataSource->getConnection($name); $this->pdo = $conn->getDB(); // DBのmigratoin番号を取得 $remote_num = $this->getRemoteNum(); print "remote: {$remote_num}\n"; // ローカルのmigration番号を取得 $local = new Teeple_Migration_Local(dirname(BASE_DIR) . "/migration/" . $name); $local_num = $local->getMaxNum(); print "local: {$local_num}\n"; while ($remote_num < $local_num) { $remote_num++; print "apply {$remote_num}.."; $ddl = $local->getContent($remote_num); $ddllist = explode(';', $ddl); try { foreach ($ddllist as $q) { $q = trim($q); if (strlen($q)) { $stmt = $this->pdo->prepare($q); $stmt->execute(); } } } catch (Exception $e) { print "fail.\n"; print $e->getMessage(); return; } $this->pdo->beginTransaction(); $stmt = $this->pdo->prepare("UPDATE " . self::TABLE_NAME . " SET version = {$remote_num}"); $stmt->execute(); $this->pdo->commit(); print "success.\n"; } print "** finish migration for {$name}. \n"; } // --entityがセットされていたらEntityも更新する if (isset($this->_argv) && in_array('--entity', $this->_argv)) { print "\n*** update entity class.\n"; $entityGenerator = Teeple_Container::getInstance()->getComponent('Teeple_EntityGenerator'); $entityGenerator->_argv = array('--force'); $entityGenerator->execute(); } }