暫定仕様メモ
自動設定
index.php?action=ModuleName を想定
- 設定ファイル
- ModuleName.ini
- 無ければモジュール名がそのままアクションクラス名となる
- アクションクラス
- ModuleName.class.php
- 無ければアクションクラス名がそのままテンプレートファイル名となる
- テンプレート
- ModuleName.html
- 必須
クラス変数
アクションやフィルタやコンポーネント(特に違いはないただのクラス)のメンバ変数は自動的に値が設定される。
- 設定ファイルの[properties]セクション
- 変数名が_[A-Z]で始まる場合はコンポーネント
- 生成されていなければ生成
アクションクラスとフィルタクラスは更に、リクエスト変数がアンダースコアから始まらない変数に設定される。
同じ名前の変数は値が上書きされる。
フィルタからアクションへ値を使い回したい場合は、リクエストクラスに値を入れると自動的に設定される。
またはコンポーネントなどを通じて明示的に取得する。
フレームワークから呼び出されるクラスを作る時に変数名について唯一の注意点は、自動的に書き換えたくない変数は_[a-z](アンダースコアの後に小文字で始まる)という名前を使用する。
メソッド名についても、自動的に実行しない場合はアンダースコアから始める。
モジュール設定iniファイル
;; index.php?action=ModuleName [module] ;; ModuleName->execute()が実行される module = ModuleName [filters] ;; ActionFilter->actionFilter()が実行される action1 = ActionFilter ;; ActionFilter->PreFilter()が実行される action2 = ActionFilter.PreFilter view1 = ViewFilter view2 = ActionFilter.postFilter [properties] _userId = 1 [methods] init = getConnection = dbname, username [results] ;; index.php?action=ErrorViewと同じ意味 error = ErrorView transfer = OtherModule [hidden] ;; action1というname属性のフォームに ;; <input type="hidden" name="key" value="value"> を付け足す action1:key = value ;; アクションの変数からhidden値を設定する action2:key = $value [DIContainer] DB = DB.dicon.ini
;; index.php?action=OtherModule [module] ;; ModuleName->OtherModule()が実行される class = ModuleName [filters] ;; ModuleNameの設定ファイルにあるフィルタが実行された後、 ;; ModuleName->OtherModule_actionFilter()が実行される ;; 特に命名規則は無いので自分で考える action1 = ModuleName.OtherModule_actionFilter [results] ;; index.php?action=ModuleNameと同じ意味 ;; 値の引き継ぎはRequestクラスやコンテナで success = ModuleName ;; ModuleNameの設定ファイルで設定したerrorを上書き error = OtherErrorView
設定は上層フィルタから順に上書きされる。
処理の流れは
設定ファイル読み込み => アクションクラス実行 => 表示処理
となる。
[module]セクションの値とURLの引数が違う場合はその値をモジュールとして処理を行う。キーは module と class があり、moduleは他からの転送を受け付ける。他から呼び出されたクラスは実行関数が呼び出し元のモジュール名となる。
[filters]セクションのキーは action* と view* があり、それぞれアクションの前に実行されるフィルタ、ビューの前に実行されるフィルタとなる(検討中)。
[properties]セクションは、キー名のメンバ変数に値を代入する。
[methods]セクションは、キー名のメソッドで値を引数としたメソッドを実行する。
[results]セクションは、アクションの戻り値によって別のモジュールへ処理を転送する。
[hidden]セクションは、フォームにinputタグのhiddenを追加する。
[DIContainer]セクションは、明示的にコンポーネントを設定する。
DIContainer設定iniファイル
[main] component = DB class = MyDB path = MyDB.class.php [properties] dbname = mydb [methods] conn = [DIContainer] Other = OtherComponent.dicon.ini
[main]セクションにそれぞれコンポーネント名、クラス名、クラスファイルパスを記述する。
その他のセクションはモジュール設定と同じ