26.3. Zend_Rest_Server

26.3.1. 導入

Zend_Rest_Server は、完全に機能する REST サーバを作成するためのものです。

26.3.2. REST サーバの使用法

例 26.6. 基本的な Zend_Rest_Server の使用法 - クラス

<?php
require_once 'Zend/Rest/Server.php';
require_once 'My/Service/Class.php';

$server = new Zend_Rest_Server();
$server->setClass('My_Service_Class');
$server->handle();
?>
			

例 26.7. 基本的な Zend_Rest_Server の使用法 - 関数

<?php
require_once 'Zend/Rest/Server.php';

/**
 * Say Hello
 *
 * @param string $who
 * @param string $when
 * @return string
 */
function sayHello($who, $when)
{
	return "Hello $who, Good $when";
}

$server = new Zend_Rest_Server();
$server->addFunction('sayHello');
$server->handle();
?>
			

26.3.3. Zend_Rest_Server サービスのコール

Zend_Rest_Server サービスをコールするには、 GET/POST 時の引数 method にそのメソッド名を指定しなければなりません。 その後に、任意の数の引数を続けることができます。これは、引数の名前 (たとえば "who") を指定するか、あるいは引数の位置を表す数値 (たとえば "arg1") を指定します。

[注意] 数値インデックス

数値で指定する引数のインデックスは、1 から始まります。

上の例の sayHello をコールするには、次のようにします。

?method=sayHello&who=Davey&when=Day

あるいは、このようにもできます。

?method=sayHello&arg1=Davey&arg2=Day

26.3.4. 独自のステータスの送信

値を返す際に独自のステータスを返すには、 キー status を含む配列を返します。

例 26.8. 独自のステータスを返す

<?php
require_once 'Zend/Rest/Server.php';

/**
 * Say Hello
 *
 * @param string $who
 * @param string $when
 * @return array
 */
function sayHello($who, $when)
{
	return array('msg' => "An Error Occurred", 'status' => false);
}

$server = new Zend_Rest_Server();
$server->addFunction('sayHello');
$server->handle();
?>
			

26.3.5. 独自の XML レスポンスを返す

独自の XML を返したい場合は、 DOMDocumentDOMElement あるいは SimpleXMLElement オブジェクトを返します。

例 26.9. 独自の XML を返す

<?php
require_once 'Zend/Rest/Server.php';

/**
 * Say Hello
 *
 * @param string $who
 * @param string $when
 * @return SimpleXMLElement
 */
function sayHello($who, $when)
{
	$xml ='<?xml version="1.0" encoding="ISO-8859-1"?>
<mysite>
	<value>Hey $who! Hope you're having a good $when</value>
	<code>200</code>
</mysite>';

	$xml = simplexml_load_string($xml);
	return $xml;
}

$server = new Zend_Rest_Server();
$server->addFunction('sayHello');

$server->handle();
?>
			

サービスからのレスポンスは、変更なしにクライアントに返されます。