Skip to content

Latest commit

 

History

History
149 lines (119 loc) · 5.46 KB

blog_read.wiki

File metadata and controls

149 lines (119 loc) · 5.46 KB

  1. summary blogチュートリアル(3) リソースの作成
  2. sidebar TableOfBlogTutorial

Table of Contents

リソースの作成

リソースはMVCでいうとモデルに当たる部分です。

リクエストに応じたメソッドが呼び出され結果がクライアントに返ります。リソースは独立していて、ページからだけでなくコマンドラインからも直接呼び出せます。(バッチでも利用できます)

リソース内ではリソースリクエストメソッドに応じたリソースリクエストインターフェイスを記述します。ここでいうインターフェイスはphpのinterfaceとは違います。例えばonReadメソッドを用意すればこのリソースにたいしてreadでアクセスすることができるようになります。メソッド内ではリソースに対する実リクエストを記述します。

Note:

   このブログでは`BEAR_Query`クラスというBEARのDBクエリーツールを使ってSQLを扱っていますが、PDO関数やDoctorine等他のライブラリの選択は自由です。データソースに何を(MySQL/Mongo )選択するか、その操作にどのライブラリ(`BEAR_Query`, PDO, `Zend_Db`, Doctorine ORM/DAL...)を選択するのかはユーザーやアプリケーション要求に応じて選定します。

App/Ro/Post.php

Note:

   BEARではどのクラスもコンストラクタの直後にonInject()が実行され、そのクラスが必要とする依存を整えます。(PHPUnitでのSetupメソッドのような働きをします)このクラスでは`BEAR_Query`サービスが`_query`プロパティにセットされます。これはDBオブジェクトを含んだSQLクエリーサービスオブジェクトです。

コマンドラインからリソースの利用

このリソースを利用してみましょう。 どこのディレクトリからでもかまいません、以下のコマンドを入力します。

以下のようなレスポンスが返ってくるはずです。

code, header, bodyとそれぞれの値が表示されました。 onRead内ではSQLクエリーで得られたarrayをreturnしているだけなのに、なぜこの3種類の情報が返って来ているのでしょうか?

HTTPモデル

例えば以下のPHPスクリプトがweb公開エリアに置いてある事を考えてみてください。

PHPでは文字列をechoしているだけですが、実際のHTTPレスポンスは

とcode(=200), header, body(=hello world)の3種の情報が返っています。これと同じように考えてみてください。つまりbody部分だけを返すとcodeにリクエストの結果コード、headerにはメタ情報が付加されたリソースオブジェクトが返ります。

フォーマットオプション

コマンドラインではフォーマットの指定ができます。

※日本語で罫線が残念な事になってますが...

CSVもつくれます。

Note:

   リソースはリソース状態(=リソースの本質的値)を持ちますがリソース表現を与えられクライアントに返されます。

関連項目 

 * [resource]
 * [CLI]
 * [db]
 * [http://pear.php.net/manual/ja/package.database.mdb2.php PEARマニュアル MDB2]