独自フレームワーク Collabo-Xを紹介する第4弾。
若干地味な話なんですが、MVCフレームワークとしての特徴の部分です。
5.MVC
Collabo-XはMVCフレームワークです。
一番基本的なことを説明してないのですが、Collabo-Xでは、Webシステムの「業務」や「機能」など、
複数の画面を一まとめにした塊を、ユニットと呼んでいます。
一つのユニットには一つのコントローラ、ビュー、オペレーションと言うクラスが最低一つずつ存在します。
コントローラは、MVCのCで、これは、ブラウザから入力されたリクエストを処理するクラスです。
Collabo-Xではすべてのリクエストをindex.phpが常に受け取ります。
その際URLは、
http://DOMAIN/CONTROLLER/ACTION
の形式で記述されます。これをApacheのmod_rewrite機能を使って、
http://DOMAIN/?contoller=CONTROLLER&action=ACTION
の形に変更されたものが、スクリプトに引き渡されてきます。
CONTROLLERの値にはユニットの名称が書かれています。
index.phpはCONTROLLERの値に対応するコントローラクラスからオブジェクトを生成します。
ACTIONに書かれるのは、コントローラの持つ処理の名前で、これをアクションと呼んでいます。
コントローラクラスに定義されたpublicの関数はすべて、
アクションとして動作することができます。これをアクションメソッドと呼んでいます。
アクションメソッドの中に書かれるのは、オペレーションメソッドとビューメソッドの呼び出しです。
基本的にはアクションメソッドにはあまり複雑な処理は書かないようにします。
処理の内容が画面の表示に直接関係するものであれば、
ビュークラスにメソッドを定義して呼び出すようにします。
DBの更新や、入力値のチェック処理、外部サイトへのリクエストなどは、
オペレーションクラスにメソッドを定義して呼び出します。
ポイントは、コントローラの持つデフォルトの動作です。
コントローラは次の手順で呼び出す処理を判断します。
1. アクションメソッドが存在した場合はアクションメソッドを呼び出す。
2. 上記に該当しない場合で、アクション名に対応するビューメソッドが存在すればそれを呼び出す。
3. 上記に該当しない場合で、アクション名に対応するテンプレートが存在すれば、それをレンダリングする。
また、オペレーションメソッドが存在しない場合でもエラーにはなりません。
これによって何ができるかと言うと、Collabo-Xの開発工程に沿うことの便宜を図っています。
1.とりあえず、データ定義関数を使って、テンプレートだけを作ってしまえば、画面ごとの表示を確認できる。
2.必要に応じてテンプレートの表示処理を定義すれば、そちらが使われるようになる。
3.コントローラにアクションメソッドを定義すれば、画面遷移が確定する。
4.アクションメソッドを定義した後で、オペレーションメソッドを作れる。
見た目周りから完成させていこうとする考え方に沿うためにこうした動きになっています。
滅多なことでは使っていませんが、ビューメソッドやオペレーションメソッドは、
複数のビュークラス、オペレーションクラスに分割して定義することができます。
その場合も、親クラスとなるビュークラス、オペレーションクラスに、
テスト的な関数を定義しておいて、本番の関数は個別に定義したビュークラスに記載するという形で、
テスト関数から本番関数に書き換えていくということが出来るようになっています。
若干地味な話なんですが、MVCフレームワークとしての特徴の部分です。
5.MVC
Collabo-XはMVCフレームワークです。
一番基本的なことを説明してないのですが、Collabo-Xでは、Webシステムの「業務」や「機能」など、
複数の画面を一まとめにした塊を、ユニットと呼んでいます。
一つのユニットには一つのコントローラ、ビュー、オペレーションと言うクラスが最低一つずつ存在します。
コントローラは、MVCのCで、これは、ブラウザから入力されたリクエストを処理するクラスです。
Collabo-Xではすべてのリクエストをindex.phpが常に受け取ります。
その際URLは、
http://DOMAIN/CONTROLLER/ACTION
の形式で記述されます。これをApacheのmod_rewrite機能を使って、
http://DOMAIN/?contoller=CONTROLLER&action=ACTION
の形に変更されたものが、スクリプトに引き渡されてきます。
CONTROLLERの値にはユニットの名称が書かれています。
index.phpはCONTROLLERの値に対応するコントローラクラスからオブジェクトを生成します。
ACTIONに書かれるのは、コントローラの持つ処理の名前で、これをアクションと呼んでいます。
コントローラクラスに定義されたpublicの関数はすべて、
アクションとして動作することができます。これをアクションメソッドと呼んでいます。
アクションメソッドの中に書かれるのは、オペレーションメソッドとビューメソッドの呼び出しです。
基本的にはアクションメソッドにはあまり複雑な処理は書かないようにします。
処理の内容が画面の表示に直接関係するものであれば、
ビュークラスにメソッドを定義して呼び出すようにします。
DBの更新や、入力値のチェック処理、外部サイトへのリクエストなどは、
オペレーションクラスにメソッドを定義して呼び出します。
ポイントは、コントローラの持つデフォルトの動作です。
コントローラは次の手順で呼び出す処理を判断します。
1. アクションメソッドが存在した場合はアクションメソッドを呼び出す。
2. 上記に該当しない場合で、アクション名に対応するビューメソッドが存在すればそれを呼び出す。
3. 上記に該当しない場合で、アクション名に対応するテンプレートが存在すれば、それをレンダリングする。
また、オペレーションメソッドが存在しない場合でもエラーにはなりません。
これによって何ができるかと言うと、Collabo-Xの開発工程に沿うことの便宜を図っています。
1.とりあえず、データ定義関数を使って、テンプレートだけを作ってしまえば、画面ごとの表示を確認できる。
2.必要に応じてテンプレートの表示処理を定義すれば、そちらが使われるようになる。
3.コントローラにアクションメソッドを定義すれば、画面遷移が確定する。
4.アクションメソッドを定義した後で、オペレーションメソッドを作れる。
見た目周りから完成させていこうとする考え方に沿うためにこうした動きになっています。
滅多なことでは使っていませんが、ビューメソッドやオペレーションメソッドは、
複数のビュークラス、オペレーションクラスに分割して定義することができます。
その場合も、親クラスとなるビュークラス、オペレーションクラスに、
テスト的な関数を定義しておいて、本番の関数は個別に定義したビュークラスに記載するという形で、
テスト関数から本番関数に書き換えていくということが出来るようになっています。