サイトコンフィグを用意しない場合、XCはどういう状態になるのか
v1.0 "unleashed" コアでは、メインシーケンスとしてタスクシステム、描画シーケンスも共通のものが用意されたため、 index.php に記述する内容は非常に短くなった。ドキュメントでは、最低2ステップで大丈夫という旨を書いている。
<?php require_once "../core/XCube_Root.class.php"; $root =& XCube_Root::getSingleton(); $root->loadConfig("./config/site_default.ini.php"); $root->execute(); ?>
XOOPS Cube コアは、自身も複数モジュールから構成されているため、構成パーツをコンフィグファイルから読み取って構成を決定する。なぜコンフィグファイルを使うかというと、ハイエンドユーザーが手元でお好みの構成を変更することを想定しているからだ。これも MOD 要素のひとつであって、DI をやりたいわけではない。
(仮に DI をやる場合はこの設定ファイルとは別物になると思う。技術者が使うファイルと、ユーザーが使うファイルは分けたい)
で、仮に設定ファイルを用意せず、
<?php require_once "../core/XCube_Root.class.php"; XCube_Root::getSingleton()->execute(); ?>
とだけ書いた場合、いまの開発中の unleashed はどういう動作をするか。結論から言うと正常に動作して終了するが、当然、画面になにも吐き出さない。
- コントローラは何も使わない。 unleashed ではコントローラクラスを使わないのでこれはよいとして……
- デリゲートマネージャは XCube_DelegateManager が採用される。 Package_Legacy などはこれを使用している。
- ロールマネージャは XCube_RoleManager が採用される。 Package_Legacy と同等。
- コンテキストは XCube_HttpContext が採用される。このクラスは廃止されるかもしれない。
- リクエストは XCube_HttpRequest が採用される。このクラスは廃止されるかもしれない。
- テキストフィルタはなにも登録されない。
- セッションは XCube_Session が採用される。
- ランゲージマネージャは XCube_LanguageManager が採用される。
- サービスマネージャは XCube_ServiceManager が採用される。ここは現状構成変更ができない。
- レンダーシステムは登録されない。
設定ファイルなしでもプログラムから同等の指定ができるように作るべきかもしれない。それにしてもなぜサービスマネージャーだけ指定できないように作ってあるんだろう*1。ちなみに、 Package_Legacy で使用されている 0.9 コアは、設定ファイルから指定できる構成は unleashed ほど多くはない。
unleashed のタスクシステムは、ルートタスクさえ決まればそれだけでアプリケーションとしての動作が可能になる。この部分をいまコントローラクラスを使用しているが、タスクシステムを使用しないケースも考えなくてはいけないので、ルートタスクの設定は別途持つようにしようと思う。
*1:ただの抜けでした orz 。minahito_sandbox 上では修正。