本文整理汇总了PHP中Zend_XmlRpc_Server::setResponseClass方法的典型用法代码示例。如果您正苦于以下问题:PHP Zend_XmlRpc_Server::setResponseClass方法的具体用法?PHP Zend_XmlRpc_Server::setResponseClass怎么用?PHP Zend_XmlRpc_Server::setResponseClass使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类Zend_XmlRpc_Server
的用法示例。
在下文中一共展示了Zend_XmlRpc_Server::setResponseClass方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: run
/**
* This is the XML-RPC server routine
*
* @access public
* @return void
*/
public function run()
{
Yii::import('application.helpers.remotecontrol.*');
$oHandler = new remotecontrol_handle($this->controller);
$RPCType = Yii::app()->getConfig("RPCInterface");
if (Yii::app()->getRequest()->isPostRequest) {
if ($RPCType == 'xml') {
$cur_path = get_include_path();
set_include_path($cur_path . PATH_SEPARATOR . APPPATH . 'helpers');
// Yii::import was causing problems for some odd reason
require_once 'Zend/XmlRpc/Server.php';
require_once 'Zend/XmlRpc/Server/Exception.php';
require_once 'Zend/XmlRpc/Value/Exception.php';
$this->xmlrpc = new Zend_XmlRpc_Server();
$this->xmlrpc->sendArgumentsToAllMethods(false);
Yii::import('application.libraries.LSZend_XmlRpc_Response_Http');
$this->xmlrpc->setResponseClass('LSZend_XmlRpc_Response_Http');
$this->xmlrpc->setClass($oHandler);
$result = $this->xmlrpc->handle();
if ($result instanceof LSZend_XmlRpc_Response_Http) {
$result->printXml();
} else {
// a Zend_XmlRpc_Server_Fault with exception message from XMLRPC
echo $result;
}
} elseif ($RPCType == 'json') {
Yii::app()->loadLibrary('LSjsonRPCServer');
if (!isset($_SERVER['CONTENT_TYPE'])) {
$serverContentType = explode(';', $_SERVER['HTTP_CONTENT_TYPE']);
$_SERVER['CONTENT_TYPE'] = reset($serverContentType);
}
LSjsonRPCServer::handle($oHandler);
}
foreach (App()->log->routes as $route) {
$route->enabled = $route->enabled && !$route instanceof CWebLogRoute;
}
exit;
} else {
// Disabled output of API methods for now
if (Yii::app()->getConfig("rpc_publish_api") == true && in_array($RPCType, array('xml', 'json'))) {
$reflector = new ReflectionObject($oHandler);
foreach ($reflector->getMethods(ReflectionMethod::IS_PUBLIC) as $method) {
/* @var $method ReflectionMethod */
if (substr($method->getName(), 0, 1) !== '_') {
$list[$method->getName()] = array('description' => str_replace(array("\r", "\r\n", "\n"), "<br/>", $method->getDocComment()), 'parameters' => $method->getParameters());
}
}
ksort($list);
$aData['method'] = $RPCType;
$aData['list'] = $list;
$aData['display']['menu_bars'] = false;
// Hide normal menu bar
$this->_renderWrappedTemplate('remotecontrol', array('index_view'), $aData);
}
}
}
示例2: testSetResponseClass
/**
* setResponseClass() test
*
* Call as method call
*
* Expects:
* - class:
*
* Returns: boolean
*/
public function testSetResponseClass()
{
$this->_server->setResponseClass('Zend_XmlRpc_Server_testResponse');
$request = new Zend_XmlRpc_Request();
$request->setMethod('system.listMethods');
$response = $this->_server->handle($request);
$this->assertTrue($response instanceof Zend_XmlRpc_Response);
$this->assertTrue($response instanceof Zend_XmlRpc_Server_testResponse);
}
示例3: testPassingInvalidResponseClassThrowsException
public function testPassingInvalidResponseClassThrowsException()
{
$this->setExpectedException('Zend_XmlRpc_Server_Exception', 'Invalid response class');
$this->_server->setResponseClass('stdClass');
}