フレームワークの処理の流れ

19 views
Skip to first unread message

tohru ohno

unread,
Jan 1, 2015, 12:10:02 AM1/1/15
to bear-p...@googlegroups.com
開けましておめでとうございます。
本年もよろしくお願いいたします。

本家あるいはネット上の資料を読んで徐々に理解しているところです。

●質問
1、処理の流れ
ブラウザ上で特定のURLにアクセスして結果が表示されるまでのおおまかな流れは以下の感じだと思うのですが問題ないでしょうか?

2、リクエストのリダイレクト
apps/Demo.Sandbox/var/www/をドキュメントルートに設定するのだと思いますが、全てのURLを一旦アプリケーションスクリプトで
受けてからディスパッチするのだと思っていますがそれにはどう設定するのでしょうか?
.htaccessに以下のように記述すれば良いでしょうか?
RewriteRule ^/$ /index.php [R=302,L]
→ドキュメントルートへのアクセスは全て/index.php(アプリケーションスクリプト)にリダイレクトする

●処理の流れ(私の理解)
アプリケーション:Demo.Sandboxに関して
http://localhost:8088/first/greeting にブラウザからアクセス

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はアプリケーションリソース、ページリソースをレンダリングした結果がクライアント(ブラウザ)に返る


お手数とは思いますがよろしくお願いいたします。

koriym

unread,
Jan 2, 2015, 8:40:10 PM1/2/15
to bear-p...@googlegroups.com
明けましておめでとうございます。今年もよろしくお願いします。

はい、処理の流れに関してはおおよそ問題ありません。
メソッドの対応の理解もその理解で初めて、「べき等性」という言葉を調べるとより適切なメソッドの選択ができると思います。

宜しくお願いします。

tohru ohno

unread,
Jan 4, 2015, 1:02:35 AM1/4/15
to bear-p...@googlegroups.com
こんにちわ
流れの理解は概ね合っているようなので安心しました。
ありがとうございました。

べき等性はBEAR.sundayの資料のどこかで読んだような気がします。
なんど実行しても同じ結果が得られることとざっくり認識しています。

今後はデータベース周りの設定、SQL文の発行
ページ間でリンク(a href="")の場合にどうするのか等をチュートリアルや資料で
調べようと思います。

今年もよろしくお願い致します。

2015年1月3日土曜日 10時40分10秒 UTC+9 koriym:
Reply all
Reply to author
Forward
0 new messages