• カテゴリ XCL開発資料 の最新配信
  • RSS
  • RDF
  • ATOM

ブログ - XCL [2.1.5] モジュールクラス ${Dirname}_Module に関する考察

XCL [2.1.5] モジュールクラス ${Dirname}_Module に関する考察

カテゴリ : 
開発用メモ » XCL開発資料
執筆 : 
masa 2008/9/14
■${Dirname}_Module の役割
XCL では modules/${dirname}/class/Module.class.php に
class ${Dirname}_Module extends Legacy_AbstractModule (or Legacy_ModuleAdapter)
というクラスが定義されている。
_
XOOPS 2.x 互換のモジュールなどでは上記のクラスがないので、
Legacy_ModuleAdapter がデフォルトで生成され、互換動作を行う。

${Dirname}_Module はコントローラとモジュールを橋渡しするモジュールプロセスを代表するオブジェクトと考えられる。

■${Dirname}_Module の現状
管理側画面ではすべてのモジュールについて${Dirname}_Moduleが生成される。
管理メニューの取得に${Dirname}_Module を使っているためだ。

しかし公開側画面では ${Dirname}_Module はカレントモジュールについてしか作成されないようだ。
(ここでは現在メインになっているモジュールのことを便宜上カレントモジュールと称する)

この理由は良くわからないが、${Dirname}_Module が重い(ように見える)オブジェクトだからかもしれない。

■${Dirname}_Module の生成プロセス
${Dirname}_Module (Legacy_AbstractModule) は XoopsModule を引数として生成される。
XoopsModule は DBの内容から生成される。
また hasconfig の場合、Legacy_AbstractModule のコンストラクタで、モジュールの XoopsConfigItem (config テーブル) を取得する。

確かに XoopsModule は仕方ないが、XoopsConfigItem まですべて取得するのは重いような気がする...
もう少しライトウェイトなクラスしたいものだ。
(現実には互換性問題があるので難しいのだろう...)

■モジュールマネジャーが欲しい
${Dirname}_Module はキャッシュされないようで、管理側画面ではカレントモジュールが複数インスタンス化されているように見える。(未確認)
コントローラ以外にサイドメニューなどが独自に createModule するからのようだ。
モジュラー構造は XOOPS の重要な部分であるし、モジュールを管理するマネジャーのようなものがあっても良いかもしれない。
  • トラックバック (0)
  • 閲覧 (4280)