#setlinebreak(on) * Ethna アプリケーションモジュール化 [#e12ced22] #htmlinsert(googleAdsense.html) まぁ、何となく。 実験段階なので真に受けないように。(^_^) ** 概要 [#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