- MeVC with Template
略称はMeVCwT。ってことにしといて
とりあえず念頭にいれてるのはWeb系。
MとVとCはいわゆるMVCとイメージ一緒。
ただ。結構あちこちで勘違いされてると思うですが、viewを使うこととtemplateエンジンを使うことは必ずしも == ではないので。あえて明記。
んで。
Modelには、ぢつは処理そのものをあんまり書かないようにしてたりする。
色々とごにょりごにょりする処理は「engine」と呼ばれるレイヤーに書いて、Modelは「複数のengineを必要に応じて呼び出す」class。見る角度とかレイヤーかえると、Modelは「局所的なcontroller」であると言い換えられるかもしれない。
engineは、だから「必要なパラメタを渡すセッタ」と「結果を返すゲッタ」があるのが通例。ゲッタで取れる情報如何では(特にlist系とかの、ボリュームがあるとき)、return専用の、いわゆる「構造体クラス」作ってその配列返すなんてことも多々。
engineは大抵
$obj = hogeri_engine; // 情報を設定 $obj->set_hogeri($hogeri); // 実行 $boolean_ret = $obj->run(); // 結果を取得 $ret_array = $obj->get();
ポイントは…実行時にはエラーをbooleanで返すだけ。エラー詳細は、get_error_detailとかget_error_codeとかメソッド作って。
最大の難関は「実行のメソッド名」(笑)。runだったりdoだったりexecだったりexecuteだったりその他もろもろ。分析系ならanalisysとかもあり。わかりやすいことが大切なのは言うまでもなし。
で、流れ的には…って絵書くの大変;;
今度ちゃんとまとめるざんす orz
- 構造体class
privateなデータと、あとはそれらへのアクセサがついてるだけのクラス。
アクセサが関門になるから便利なのよこれが。
MWだと、構造体class用の基底クラスとして「basis_clump」ってのがいるです。
- 配列returnをfetchに パターン
ネーミングが長い(苦笑
んと…MeVCwTにおいて。engineが「配列をどかん」と返してくるじゃない?
$ret_array = $obj->get();
これがまたメモリ食うのよ;;
なので。大容量のときは、以下のパターンもあり。
// 結果の取得&処理 while($obj->fetch()) { $ret_mono_class_instance = $obj->get(); }
内部的に、returnするインスタンスはちゃんと使いまわすこと!!w
これで、大分無茶なメモリから開放されます。
え? ガベコレ? それなにおいしいの? ちゃんと動くの?