カテゴリー

最新の記事

最近のコメント

最近のトラックバック

月別アーカイブ

ブログ検索

RSSフィード

ブロとも申請フォーム

この人とブロともになる

スポンサーサイト

スポンサー広告
--.--.--
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

ベンチャーブログのランキングに参加しています。
下のバナーをクリックして応援していただけると嬉しいです。
にほんブログ村 ベンチャーブログへ

PHPフレームワークもどき「PnF」(7)~サンプルコード「ItemListBox」

PHP
2008.11.24
次に「ItemListBox」のコードを作成しましょう。このVCは「ItemBox」という「子VC」を持つという点が、大きな特徴になっています。

コード7-1

3~5行目
まずVCの親クラスをインクルードし「VcItemListBox」クラスを派生させます。

15~36行目
「ItemListBox」が保持すべきプロパティ情報を宣言します。ここではアイテムリストに含まれるアイテム数(ItemNum)と各アイテムの内容(ItemDataList)を用意しています。ItemDataListの内容は連想配列の配列であり、初期値は空配列となっています。

38~47行目
「ItemListBox」で使用するVPを宣言しています。「登録されているアイテム数:」の後に続く数字を文字列として表示するため、テキスト表示要素を用意しておきます。

コード7-2

50行目
「ItemListBox」が引き受けるGET変数の定義です。このVCはGET変数を引き受けないため、空配列を記述しておきます。

53~67行目
「ItemListBox」がサブスクライブするイベント名と、各イベント名に対応するアクションメソッド名の定義です。「ADD_ITEM」を受け取った時には「addItem」、「CLEAR_LIST」を受け取った時には「clearList」、「REFRESH」を受け取った時には「refreshViewData」を呼び出します。

コード7-3

74~86行目
イベント処理チェーンに入る直前に実行したい処理を「前処理」として記述します。「ItemListBox」は各アイテムの内容を表示する「ItemBox」を子VCとして生成する必要がありますが、その処理はここで行います。子VCの生成をVPのようにプロパティ設定で行うのではなく、前処理のアクションメソッドで行うのは、子VCの生成を「動的」に行いたい場合があるからです。例えばこの「ItemListBox」は、子VCとなる「ItemBox」の数が状況によって変わってきます。このようなケースでは、子VCを静的に生成することは困難です。
ここでは、SESSION変数によって引き継いだ「ItemDataList」の要素数に合わせて、「ItemBox_n(nは0から始まる番号)」を生成しています。VCを生成するメソッドは「addViewComponent」としてPnFによって定義されており、これにVC名、VCクラス、生成時のパラメーターを引数として渡します。各「ItemBox_n」にはアイテム内容のデータが必要なので、ここでは「ItemDataList」に格納されている各アイテムのデータを第3引数に設定します。

88~102行目
アクションメソッド「addItem」の処理内容です。「ADD_ITEM」イベントに付随するフォーム内容を受け取り、その内容を「ItemDataList」プロパティに追加します。複数の要素を持つことができるVCプロパティに新たな要素を追加する場合には、いったん「$this->getVcProperty」でプロパティ情報をローカル変数に取得し、そのローカル変数に新しい要素を追加した上で、「$this->setVcProperty」でプロパティ情報を上書きします。
さらにこのアクションメソッドでは、追加されたアイテムに対応するVCの追加を行っています。ここで注意しなければならないのは、イベント処理チェーンの途中で生成されたVCは、イベント処理チェーンに不完全な形で参加することになるということです。「REFRESH」だけは確実に受け取れますが、他のイベントを受け取れるかどうかは、生成されるタイミングに依存します。

104~111行目
アクションメソッド「clearList」の処理内容です。アイテムデータの内容をクリアし、アイテム数をゼロにセットします。

113~114行目
REFRESHイベントに対応した処理の記述です。ここでは何も行いません。

コード7-4

HTMLテンプレートです。「$this->getVpViewData」でVPのHTMLを取得しているだけではなく、「$this->getVcViewData」によって子VCのHTMLも取得し、$htmlに埋め込んでいることがわかります。これによって子VCの表示内容を、このVCの表示内容に統合しているわけです。
スポンサーサイト

ベンチャーブログのランキングに参加しています。
下のバナーをクリックして応援していただけると嬉しいです。
にほんブログ村 ベンチャーブログへ

FC2Ad

相続 会社設立

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。