Zendのは本当にRESTfulなではないので、残念ながら、あなたの最善の策は、JSON-RPCです。
あなたがコントローラでそれを行うことができ、またはこの男はhere
を行ったようにあなただけのオーバーヘッドを減らすために、あなたのindex.phpに加えてajax.phpを作ることができる基本的に、あなたがする必要があるのはこれです:その後、どこかにあなたのレイアウトで
$server = new Zend_Json_Server();
$server->setClass('My_Class_With_Public_Methods');
// I've found that a lot of clients only support 2.0
$server->getRequest()->setVersion("2.0");
if ('GET' == $_SERVER['REQUEST_METHOD']) {
// Indicate the URL endpoint, and the JSON-RPC version used:
$server->setTarget('/ajax.php')
->setEnvelope(Zend_Json_Server_Smd::ENV_JSONRPC_2);
// Grab the SMD
$smd = $server->getServiceMap();
// Return the SMD to the client
header('Content-Type: application/json');
echo $smd;
return;
}
$server->handle();
:例のために
$server = new Zend_Json_Server();
$server->setClass('My_Class_With_Public_Methods');
$smd = $server->getServiceMap();
?>
<script>
$(document).ready(function() {
rpc = jQuery.Zend.jsonrpc({
url : <?=json_encode($this->baseUrl('/ajax'))?>
, smd : <?=$smd?>
, async : true
});
});
</script>
、ここではそのクラスです:
class My_Class_With_Public_Methods {
/**
* Be sure to properly phpdoc your methods,
* the rpc clients like it when you do
*
* @param float $param1
* @param float $param2
* @return float
*/
public function someMethodInThatClass ($param1, $param2) {
return $param1 + $param2;
}
}
その後、あなたは、単にJavaScriptでそのようなメソッドを呼び出すことができます。
rpc.someMethodInThatClass(first_param, second_param, {
// if async = true when you setup rpc,
// then the last param is an object w/ callbacks
'success' : function(data) {
}
'error' : function(data) {
}
});
ありのAndroid/iPhoneのためのよく知られているJSON-RPCライブラリの多くはありません - しかし、私は、これはで動作することを発見しましたAndroid用Zend_Json_Serverは:
http://software.dzhuvinov.com/json-rpc-2.0-base.html
、これはiPhoneのために動作します:
http://www.dizzey.com/development/ios/calling-json-rpc-webservice-in-ios/
ここから、明らかに、javascript /モバイルアプリケーションと同じ方法でMy_Class_With_Public_Methodsを使用できます。
あなたがここに使って何をして終了しましたか?今は似たような状況にいる。 –