recess----2.Controllerでrequest情報を取り込む
12831 ワード
実際、最初のアプリにはmodelがない以外は役に立ちましたが、単独で持ってきてはっきり見る必要があります.
Recessフレームワーク内のcontrollerは典型的なMVCフレームワークのcontrollerであり、ブラウザ(または他のクライアント)からのrequestを処理し、モデルの中を参照する方法を呼び出して演算し、最後に適切なviewを選択してresponseを生成し、responseをクライアントに返信する.ここには何も葛藤することはありません.コードを深く見なければなりません.
ここでのプロセスは、Hello Recessというアプリに基づいて続けます.
最初の例のコントロールを見てみましょう
前に大まかな紹介がありますが、ここのコメントは「!Route GET」はroutingとして使われています.何が実現したのか、効率的なのか、私たちはしばらく関心を持っていません.それは後の話題です.私たちはコントロールについて議論し続けます.コントロールは何を処理しますか?OK、上の例ではブラウザからのGETリクエストを処理しています.HTTPの標準要求にはrequest METHOD,variables,headers,cookies,URLなどが含まれていることが知られている.注記の「!Route」はroutingに教えて、私たちはcontrollerの中のこのmethod(ここではcontorllerというクラスの中の1つの関数を指して、つまり方法)で相応の「GET/POST/POT/DELETE」これらのHTTP METHOD(ここではHTTPプロトコルの中の定義の要求方式を指す)を処理します.次に,requestが携帯する情報を一連の口実で取り出し,処理することができる.
GETリクエストを例に、情報の取り出し方を見てみましょう.このコントロールにmethodを追加する必要があります.
ここではviewを使う必要はありませんので、直接exitします.ブラウザで直接見るとrequestというobjectのすべての内容が直接印刷されます.
アクセスhttp://localhost/helloRecess/printItを選択すると、次の情報が表示されます(画面に直接印刷されるのは少し乱れています.ここではソースコードを表示した構造です).
ここで、Requestがどのような情報を持っているかは一目瞭然です.呼び出しの方法については、次のようにします.
1)文字列.たとえば、上記のresourceアイテムでは、$->this->request->resourceを直接使用します.
2)array.たとえば、上のheadersアイテムのHostアイテムは、$this->request->headers[HOST]を使用します.get,post,putの3つのarrayの取り方も同様で,Key=valueに対応する.アクセスを試みることができますhttp://localhost/helloRecess/printIt?foo=barさあ、上のrequest->getというarrayの中で何が変わっているか見てみましょう.
Recessフレームワーク内のcontrollerは典型的なMVCフレームワークのcontrollerであり、ブラウザ(または他のクライアント)からのrequestを処理し、モデルの中を参照する方法を呼び出して演算し、最後に適切なviewを選択してresponseを生成し、responseをクライアントに返信する.ここには何も葛藤することはありません.コードを深く見なければなりません.
ここでのプロセスは、Hello Recessというアプリに基づいて続けます.
最初の例のコントロールを見てみましょう
<?php
Library::import('recess.framework.controllers.Controller');
/**
* !RespondsWith Layouts
* !Prefix Views: home/, Routes: /
*/
class HelloRecessHomeController extends Controller {
/** !Route GET */
function index() {
$this->flash = 'Hello Recess!';
}
}
?>
前に大まかな紹介がありますが、ここのコメントは「!Route GET」はroutingとして使われています.何が実現したのか、効率的なのか、私たちはしばらく関心を持っていません.それは後の話題です.私たちはコントロールについて議論し続けます.コントロールは何を処理しますか?OK、上の例ではブラウザからのGETリクエストを処理しています.HTTPの標準要求にはrequest METHOD,variables,headers,cookies,URLなどが含まれていることが知られている.注記の「!Route」はroutingに教えて、私たちはcontrollerの中のこのmethod(ここではcontorllerというクラスの中の1つの関数を指して、つまり方法)で相応の「GET/POST/POT/DELETE」これらのHTTP METHOD(ここではHTTPプロトコルの中の定義の要求方式を指す)を処理します.次に,requestが携帯する情報を一連の口実で取り出し,処理することができる.
GETリクエストを例に、情報の取り出し方を見てみましょう.このコントロールにmethodを追加する必要があります.
/** !Route GET, printIt */
function printIt() {
print $this->request->resource . '<br />';
print_r($this->request);
exit;
}
ここではviewを使う必要はありませんので、直接exitします.ブラウザで直接見るとrequestというobjectのすべての内容が直接印刷されます.
アクセスhttp://localhost/helloRecess/printItを選択すると、次の情報が表示されます(画面に直接印刷されるのは少し乱れています.ここではソースコードを表示した構造です).
/helloRecess/printIt
Request Object
(
[accepts] => Accepts Object
(
[headers:protected] => Array
(
[ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
[ACCEPT_ENCODING] => gzip,deflate,sdch
[ACCEPT_LANGUAGE] => zh-CN,zh;q=0.8,en;q=0.6
[CACHE_CONTROL] => max-age=0
[CONNECTION] => keep-alive
[COOKIE] => CNZZDATA5619041=cnzz_eid%3D1321855538-1388926353-%26ntime%3D1388926353%26cnzz_a%3D0%26ltime%3D1388926352365; session=GYjQdK9TIghhNg5jeOX40Wj5fswl1qoGNYg0spSAT9qqptZRI4TIZALE2Gz46lKT
[HOST] => www.noarduino.com
[USER_AGENT] => Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36
)
[format:protected] =>
[formats:protected] =>
[formatsTried:protected] => Array
(
)
[formatsCurrent:protected] => Array
(
)
[languages:protected] =>
[encodings:protected] =>
[charsets:protected] =>
)
[format] => html
[headers] => Array
(
[ACCEPT] => text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8
[ACCEPT_ENCODING] => gzip,deflate,sdch
[ACCEPT_LANGUAGE] => zh-CN,zh;q=0.8,en;q=0.6
[CACHE_CONTROL] => max-age=0
[CONNECTION] => keep-alive
[COOKIE] => CNZZDATA5619041=cnzz_eid%3D1321855538-1388926353-%26ntime%3D1388926353%26cnzz_a%3D0%26ltime%3D1388926352365; session=GYjQdK9TIghhNg5jeOX40Wj5fswl1qoGNYg0spSAT9qqptZRI4TIZALE2Gz46lKT
[HOST] => www.noarduino.com
[USER_AGENT] => Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/32.0.1700.76 Safari/537.36
)
[resource] => /helloRecess/printIt
[resourceParts] => Array
(
[0] => helloRecess
[1] => printIt
)
[method] => GET
[input] =>
[isAjax] =>
[get] => Array
(
)
[post] => Array
(
)
[put] => Array
(
)
[cookies] => Array
(
[CNZZDATA5619041] => cnzz_eid=1321855538-1388926353-&ntime=1388926353&cnzz_a=0<ime=1388926352365
[session] => GYjQdK9TIghhNg5jeOX40Wj5fswl1qoGNYg0spSAT9qqptZRI4TIZALE2Gz46lKT
)
[meta] => Meta Object
(
[app] => HelloRecessApplication Object
(
[name] => Hello Recess
[controllersPrefix] => helloRecess.controllers.
[modelsPrefix] => helloRecess.models.
[viewsDir] => /home/qkdemoco/domains/noarduino.com/public_html/apps/helloRecess/views/
[assetUrl] => /apps/helloRecess/public/
[routingPrefix] => helloRecess/
[plugins] => Array
(
)
[viewPathFinder:protected] => PathFinder Object
(
[paths:protected] => Array
(
[0] => /home/qkdemoco/domains/noarduino.com/public_html/recess/recess/framework/ui/parts/
[1] => /home/qkdemoco/domains/noarduino.com/public_html/apps/helloRecess/views/
)
)
)
[controllerMethod] => printIt
[controllerMethodArguments] => Array
(
)
[useAssociativeArguments] => 1
[controller] => HelloRecessHomeController Object
(
[request:protected] => Request Object
*RECURSION*
[headers:protected] =>
[application:protected] => HelloRecessApplication Object
(
[name] => Hello Recess
[controllersPrefix] => helloRecess.controllers.
[modelsPrefix] => helloRecess.models.
[viewsDir] => /home/qkdemoco/domains/noarduino.com/public_html/apps/helloRecess/views/
[assetUrl] => /apps/helloRecess/public/
[routingPrefix] => helloRecess/
[plugins] => Array
(
)
[viewPathFinder:protected] => PathFinder Object
(
[paths:protected] => Array
(
[0] => /home/qkdemoco/domains/noarduino.com/public_html/recess/recess/framework/ui/parts/
[1] => /home/qkdemoco/domains/noarduino.com/public_html/apps/helloRecess/views/
)
)
)
)
)
[username] =>
[password] =>
)
ここで、Requestがどのような情報を持っているかは一目瞭然です.呼び出しの方法については、次のようにします.
1)文字列.たとえば、上記のresourceアイテムでは、$->this->request->resourceを直接使用します.
2)array.たとえば、上のheadersアイテムのHostアイテムは、$this->request->headers[HOST]を使用します.get,post,putの3つのarrayの取り方も同様で,Key=valueに対応する.アクセスを試みることができますhttp://localhost/helloRecess/printIt?foo=barさあ、上のrequest->getというarrayの中で何が変わっているか見てみましょう.