yiiapi/docs/guide/ja/topics.webservice.txt

(开头部分) 8KB

这里只显示每个文件的开头 60 行。登录后可以解锁完整代码。

ウェブサービス
===========

[ウェブサービス](http://ja.wikipedia.org/wiki/Web%E3%82%B5%E3%83%BC%E3%83%93%E3%82%B9) とはネットワーク越しに、マシン同士の相互運用性をサポートする仕組みのことです。
ウェブアプリケーションの文脈においては、多くの場合、インターネットを介してアクセスできる API 群で、リクエストされたサービスをホストするリモートシステム上で実行されるものを、ウェブサービスと呼んでいます。
たとえば、[Flex](http://www.adobe.com/products/flex/) ベースのクライアントは、サーバで動いている PHP のウェブアプリケーションに実装された関数を呼び出すことが出来ます。
ウェブサービスはコミュニケーションプロトコルスタックの基礎部分を [SOAP](http://en.wikipedia.org/wiki/SOAP) に依存しています。

Yii は [CWebService] と [CWebServiceAction] を提供することで、ウェブアプリケーションでウェブサービスを提供する作業を簡単にします。
API は **サービスプロバイダ** と呼ばれるクラス群にまとめられます。
Yii はそれぞれのクラスについて、[WSDL](http://www.w3.org/TR/wsdl) スペックファイルを生成し、どの API が利用可能で、どのように呼び出すことができるのかを記述します。
クライアントによって API が呼び出されると、Yii が対応するサービスプロバイダをインスタンス化し、要求された API を実行してリクエストに応えます。


> Note|注意: [CWebService] は [PHP SOAP extension](http://www.php.net/manual/ja/ref.soap.php) に依存します。
この章の例を実行する前に拡張が有効になっていることを確認して下さい。

サービスプロバイダの定義
-------------------------

上で述べたように、サービスプロバイダとはリモートから呼び出し可能なメソッドを定義するクラスのことです。
Yii は [doc comment](http://java.sun.com/j2se/javadoc/writingdoccomments/) と [class reflection](http://php.net/manual/ja/book.reflection.php) に基づいて、どのメソッドがリモートから呼び出し可能であり、どのような引数をとり、そしてどのような返り値を返すのかを決定します。

まず単純な株価情報サービスからはじめましょう。
このサービスではクライアントが株価情報を要求できます。
サービスプロバイダを以下のように定義します。
プロバイダのクラス `StockController` を [CController] のサブクラスとして定義していることに注意してください。
ただし、このことは必須ではありません。

~~~
[php]
class StockController extends CController
{
	/**
	 * @param string the symbol of the stock
	 * @return float the stock price
	 * @soap
	 */
	public function getPrice($symbol)
	{
		$prices=array('IBM'=>100, 'GOOGLE'=>350);
		return isset($prices[$symbol])?$prices[$symbol]:0;
		 $symbol の株価を返す
	}
}
~~~

上記の例では、コメント (doc comment) に `@soap` タグをつけることによって、`getPrice` というメソッドがウェブサービス API であることを宣言しています。
引数と返値のデータタイプの定義も、コメント (doc comment) に依存します。
API を追加したい場合は、同じ方法で宣言して下さい。

ウェブサービスアクションを定義する
----------------------------

サービスプロバイダを定義したので、クライアントから呼び出し可能にする必要があります。
具体的には、サービスを公開するためのコントローラアクションを作成したいと思います。
これはコントローラクラスで、[CWebServiceAction] アクションを宣言することで容易に実現可能です。
サンプルコードでは `StockController` にそれを追加します。

~~~
后面还有 134 行代码,购买后查看完整代码

24 小时内免费解锁 3 个项目,之后 1 积分/个。 规则说明

AI 解读

登录后可用,每次 10 积分,解读结果公开显示在下面。

还没有人解读过这个文件。