例
アプリケーション:Demo.Sandboxに関して
1、アプリケーションスクリプトの実行
apps/Demo.Sandbox/var/www/index.phpが実行される
すべてのリクエストはアプリケーションスクリプトが一旦受けてからリクエストのURIに対応したページリソースを呼び出す(ディスパッチ)
ルーターを使ってリクエストに必要な情報を取得
list($method, $pagePath, $query) = $app->router->match();
内部的な呼び出し:
$app->page = $app->resource->$method->uri('page://self' . $pagePath)->withQuery($query)->eager->request();
page://self/first/greetingへリクエスト
apps/Demo.Sandbox/src/Resource/Page/First/Greeting.phpが実行される
2、ページリソース(Resource/Page/First/Greeting.php)の実行
onGet()メソッド内でアプリケーションリソースを実行する
$this['greeting'] = $this
->resource
->get
->uri('app://self/first/greeting')
->withQuery(['name' => $name])
->request();
apps/Demo.Sandbox/src/Resource/App/First/Greeting.phpが実行される
実行結果はgreetingスロットに格納する
3、アプリケーションリソース(Resource/App/First/Greeting.php)の実行
onGet()メソッド内でビジネスロジックを実行して結果を返す
return "Hello, {$name}";
(注)
ここでは決まった文字列を返しているがDBアクセスが必要ならこの中でSelect文を実行してから結果を返す。
メソッドとSQL文との関連は以下のとおり
onGet:select文
onPut:update文
onDelete:delete文
onPost:insert文
4、アプリケーションスクリプトの実行(1の続き)
リクエストが正常終了したら、結果を表示
OK: {
$app->response->setResource($app->page)->render()->send();
exit(0);
}
render()で結果を表示
・アプリケーションリソースの表示
アプリケーションリソースの実行結果をどう表示するかはアプリケーションリソース自身で定義する
Resource/App/First/Greeting.tplで記述する
・ページリソースの表示
アプリケーションリソースの実行結果をResourceObject(RO)として受け取る
ページのどこにROを表示するかは指定するがROをどう表示するかは関知しない
Resource/Page/First/Greeting.tplで記述する
最終的なHTMLはアプリケーションリソース、ページリソースをレンダリングした結果がクライアント(ブラウザ)に返る
お手数とは思いますがよろしくお願いいたします。