- summary ページリソース
ページをリソースとして扱う事ができます。
ページリソース結果のタイプは2つあります。pageのhttp出力結果をリソース結果とする *html* とページ上でsetされたリソースを値として利用する *resource* の2つです。
参照系のページでページクラスの役割はリソースにアクセスし、そのリソース状態をviewコンポーネントでHTTP出力することです。
ページクラスではリソースをアクセスする部分とその結果を出力する部分がそれぞれ`onInit(array $args)`, `onOutput()`と分かれています。MVC的に役割をみるとページクラスはリソースというモデルを操作するコントローラーになりますが、そのページをリソースとして扱うというのがページリソースです。コントローラー自身がモデルになるともいえます。またリソースは他のリソースを呼ぶ事ができるというROAのレイヤーの原則をページにも適用しようとするものでもあります。
App/Ro以下に配置するRoリソースの形式とhtdocs/以下に配置するページリソースの構造は似ている事にお気づきでしょう。どちらもコンストラクタに渡されるarray $configという設定でオブジェクトが作成され、onInject()でそのクラスで必要なサービス(オブジェクト)を利用可能にし、onInit(array $args)またはonRead(array $values)で下位のデータソースレイーヤーに値を求め結果をsetまたはreturnします、どちらもオブジェクトを利用するのに専用のクラスを用いユーザーが直接オブジェクトを扱う事はありません。
ページクラスをRoのように扱うのがページクラスです。 上記のページクラスをread操作したときはonInit(arra $args)が呼ばれ、read以外(区別はありません)の操作をしたときにはonAction(array $submit)が呼ばれます。引数はどちらも同じで'values'パラメーターで指定する連想配列が1つだけ渡ります。リソース結果はオプションの指定によって異なります。
|| *uri* || *values* || || ページスクリプトパス || onInit(array $args)の$args||
|| *uri* || *values* || || ページスクリプトパス || onAction(array $submit)の$submit ||
ページスクリプトパスは拡張子(php)を除いたものを使います。
例) htdocs/db/select/item.phpならURIは*page://db/select/item* になります
onInit()内でsetしたリソースの値を連想配列にしたものをボディにしたリソースオブジェクトが返ります。
onOutput()内のdisplay()で主力されるHTTPのリソースオブジェクトが返されます。HTTPのヘッダーがリソースオブジェクトのヘッダー、HTTPボディがリソースオブジェクトのボディになります。