ブログ - XCL [2.1.5] モジュールクラス ${Dirname}_Module に関する考察
■${Dirname}_Module の役割
XCL では modules/${dirname}/class/Module.class.php に
class ${Dirname}_Module extends Legacy_AbstractModule (or Legacy_ModuleAdapter)
というクラスが定義されている。
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 の重要な部分であるし、モジュールを管理するマネジャーのようなものがあっても良いかもしれない。
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 の重要な部分であるし、モジュールを管理するマネジャーのようなものがあっても良いかもしれない。