ブログ - Legacy_Controller

Legacy_Controller

カテゴリ : 
開発用メモ » XCL開発資料
執筆 : 
masa 2008/8/24
■ファイル
modules/legacy/kernel/Legacy_Controller.class.php

■クラス定義
Legacy_Controller extends XCube_Controller

■生成
(include/cubecore_init.php)
$root->setupController() で XCube_Root から生成される。
_
■オーバーライド
XCube_Root::setupController (core/XCube_Root.class.php)
では以下の設定情報(settings/site_{default,custom}.ini.php)から生成。
[Cube]
Controller=コントローラ名
[コントローラ名]
path=ファイルパス
class=クラス名
root=cubeルート([Cube]Root)以外の場合のルートパス

■strategy パターンによるロジック変更
Legacy_Controller の機能は strategy パターンにより交換可能になっている。
これは管理側と一般画面のロジックを差し替え可能にするためのもので、Legacy_Controller::prepare() でハードコードされている。

ストラテジーobjectはLegacy_AbstractControllerStrategy を継承したクラスである。
管理側:Legacy_AdminControllerStrategy
一般側:Legacy_PublicControllerStrategy

ストラテジーobjectの主なインターフェース
・setupModuleContext(&$context, $dirname)
・_setupFilterChain()
・setupBlock()
・getVirtualCurrentModule()
・_processPreBlockFilter()
・isEnableCacheFeature()
・enableAccess()
・setupModuleLanguage()

・getMainThemeObject()
(getMainThemeObject() は Legacy_AbstractControllerStrategy で定義されていないようなので、PHPでなければエラーになるところか?)

・mStatusFlag ???
setStrategy() で使われている?
setStrategy() はちょっと怪しげなメソッド...
cp_header.php や xoops_cp_header() などから呼ばれている。下位互換性のために作ったバックドアか?
(ちなみにmStatusFlag が下位クラスで多重定義されているのは、いいのだろうか?PHP的にはなんでもありだが...)

■主要メソッド
・executeCommon()
(common.php から呼ばれる. common.php は mainfile.phpからインクルードされるので _LEGACY_PREVENT_EXEC_COMMON_ を定義しない限り自動的に呼ばれる)
strategy の setupBlock を呼び出し、ブロックプロシージャを呼び出す

・executeHeader()
・execute()
・executeView()
  • トラックバック (0)
  • 閲覧 (4772)