Zend_Dojo_Data: dojo.data エンベロープDojo には、データを扱うウィジェットのデータを抽象化するための dojo.data コンポーネントが存在します。 このコンポーネントの持つ機能は、 データストアのアタッチ、identifier フィールド (そしてオプションで label フィールド) に関連するメタデータの提供、 問い合わせやソート用の API、 データストアからのレコードの取得などがあります。 dojo.data は、よく XmlHttpRequest と組み合わせて用いられます。 動的なデータをサーバから取得するためにです。 この基本的な仕組みは、QueryReadStore を拡張して URL とクエリ情報を指定するようにします。 サーバ側からは、データを次のような JSON 形式で返します。
Zend_Dojo_Data は、 このような構造をプログラムで作成したりそれを操作したり、 配列や JSON にシリアライズしたりといった機能のシンプルなインターフェイスを提供します。 Zend_Dojo_Data の使用法もっともシンプルな使用法は、dojo.data に各アイテムの identifier フィールドの名前とアイテムの内容 (データ) を渡すことです。 コンストラクタか、あるいは設定用メソッドで渡します。 Example #1 コンストラクタでの Zend_Dojo_Data の初期化
Example #2 設定用メソッドでの Zend_Dojo_Data の初期化
アイテムをひとつずつ追加したり複数一括で追加したりするには、それぞれ addItem() および addItems() を使用します。 Example #3 Zend_Dojo_Data へのデータの追加
個々のアイテムは、次のいずれかとなります。
これらのアイテムのコレクションをアタッチするには addItems() あるいは setItems() (既存のアイテムはすべて消去されます) を使用します。 これを使用するときには、引数をひとつ指定します。
アイテムの label として働くフィールドを指定したい場合は setLabel() をコールします。 Example #4 Zend_Dojo_Data での label フィールドの指定
最後に、Zend_Dojo_Data のアイテムを dojo.data JSON 配列から読み込むには fromJson() メソッドを使用します。 Example #5 JSON からの Zend_Dojo_Data の作成
コンテナへのメタデータの追加Dojo コンポーネントの中には、 dojo.data の中に追加のメタデータを必要とするものもあります。 たとえば dojox.grid.Grid は、データを動的に dojox.data.QueryReadStore から取得できます。 ページ移動を正しく行うには、返されるデータの中に numRows というキーのデータ (中身はクエリが返す行の数) が必要となります。 これによりグリッドが、サーバ側へのリクエストをいつ送ったらいいのか、 そしていつリクエストが不要になるのか (つまり最終ページに達するのがいつなのか) を知ることができるようになります。 このテクニックを使用すると、大規模なデータセットをグリッドに表示させる際に データ全体をいちどに取得する必要はなくなります。 Zend_Dojo_Data では、 このようなプロパティをオブジェクトのメタデータとして設定できます。 以下の使用例をご覧ください。
高度な使用法シリアライズ可能なデータコンテナとしての働きだけではなく、 Zend_Dojo_Data にはデータを様々な方法で操作したり 読み込んだりする機能もあります。 Zend_Dojo_Data は、インターフェイス ArrayAccess、Iterator および Countable を実装しています。 そのため、データコレクションをまるで配列であるかのように使用できます。 すべてのアイテムは、その identifier フィールドを用いて参照します。 identifier は一意でなければならないので、 この値を使用すればレコードを特定できるのです。 参照する方法には、 getItem() メソッドを使用するものと配列表記を使用するものの 2 通りがあります。
identifier がわかれば、それを使用してアイテムを取得したり、 あるいは更新したり削除したり作成したり調べたりできます。
すべてのアイテムをループ処理することもできます。 内部的には、すべてのアイテムは配列として格納されています。
count で、アイテムの総数を調べることも可能です。
また、このクラスは __toString() を実装しているので、 JSON への変換は単に echo するか文字列にキャストするだけで可能です。
使用可能なメソッド上で説明したインターフェイスを実装するのに必要なメソッドに加えて、 次のメソッドが使用可能です。
|