- 追加された行はこの色です。
- 削除された行はこの色です。
#freeze
#setlinebreak(on)
* Ethna アプリケーションモジュール化 [#e12ced22]
#htmlinsert(googleAdsense.html)
まぁ、何となく。
実験段階なので真に受けないように。(^_^)
*** 概要 [#l0b9bc77]
** 概要 [#l0b9bc77]
ケータイのページならEthna標準で事足りるかもしれないが、
PCページだと必ずしも「単一ページ・単機能」という訳にはいかない。
PCページは見やすくするために、
機能をボックス単位で分けていることが多い。
そのボックスを一つのモジュールとして開発することが出来れば、
再利用性、メンテナンス性が向上する・・・かも。
ちょっとやってみよ。
mojaviのmoduleとはものが違うので悪しからず。
*** モジュールの概念 [#a3b66767]
ここでいうモジュールを一言で言うと、
[MVCひとかたまり]
って感じ。
通常のEthnaだと、
#ref(Ethnaモジュール概念1.png)
こんな感じ。
概念的にはリクエストをコントローラが受け取って、
アクションとビューを動かすのだが、
実際はアクション、ビューの順番で動いているに過ぎない。
そのアクションとビューを一つの固まり「モジュール」として扱い、
モジュールをアクションから呼び出せるようにする。
#ref(Ethnaモジュール概念2.png)
こうすれば、
モジュールごとにテンプレートを設置できるのでメンテナンス性が向上。
プログラム単位が小さくなるので再利用性も向上する。
よね。。。
*** 構築 [#ka87fc1d]
といっても、
何も難しいことをするわけではない。
単にコントローラを二つ用意するだけ。
用意するのは
・通常用コントローラ
・モジュール用コントローラ
それぞれ別次元で命名していけばいい。
たとえば「action_[アクション名]=true」というデフォルトのリクエストを使うとすると
「action_[アクション名]=true&module=[モジュール名]」とする。
モジュール用コントローラはこんな感じ。
class Project_Module_Controller extends Project_Controller
{
function _getActionName_Form()
{
if (array_key_exists('module', $_REQUEST) == false) {
return null;
}
return $_REQUEST['module'];
}
}
デフォルトでブランクのものを返すようにしておく。
そしてアクション内のどこかでエントリする。
Project_Module_Controller :: Main(Project_Module_Controller', 'blank');
まぁ、セキュリティ云々の問題が幾つか残ってるけど、
これでいけそうな気配。
ちょっとこれで作ってみよう。
#comment