Skip to content

Instantly share code, notes, and snippets.

@gggeek
Created January 4, 2015 23:52
Show Gist options
  • Save gggeek/26344a07eb212d38ecd7 to your computer and use it in GitHub Desktop.
Save gggeek/26344a07eb212d38ecd7 to your computer and use it in GitHub Desktop.
Integrating phpxmlrpc in Yii
<?php
// autoload_classmap.php @generated by Composer
$vendorDir = dirname(dirname(__FILE__));
$baseDir = dirname($vendorDir);
return array(
// 'ADODB_soap' => $vendorDir . '/phpxmlrpc/extras/adodb/drivers/adodb-soap.inc.php',
// 'ADODB_xmlrpc' => $vendorDir . '/phpxmlrpc/extras/adodb/drivers/adodb-xmlrpc.inc.php',
// 'ADORecordSet_soap' => $vendorDir . '/phpxmlrpc/extras/adodb/drivers/adodb-soap.inc.php',
// 'ADORecordSet_xmlrpc' => $vendorDir . '/phpxmlrpc/extras/adodb/drivers/adodb-xmlrpc.inc.php',
// 'ADORecordset_empty_I' => $vendorDir . '/phpxmlrpc/extras/adodb/drivers/adodb-soap.inc.php',
// 'documenting_xmlrpc_server' => $vendorDir . '/phpxmlrpc/extras/docxmlrpcs.inc',
// 'js_rpc_server' => $vendorDir . '/phpxmlrpc/extras/ajax/ajaxmlrpc.inc',
// 'jsonrpc_client' => $vendorDir . '/phpxmlrpc/extras/jsonrpc/jsonrpc.inc',
// 'jsonrpc_server' => $vendorDir . '/phpxmlrpc/extras/jsonrpc/jsonrpcs.inc',
// 'jsonrpcmsg' => $vendorDir . '/phpxmlrpc/extras/jsonrpc/jsonrpc.inc',
// 'jsonrpcresp' => $vendorDir . '/phpxmlrpc/extras/jsonrpc/jsonrpc.inc',
// 'jsonrpcval' => $vendorDir . '/phpxmlrpc/extras/jsonrpc/jsonrpc.inc',
// 'proxy_xmlrpc_server' => $vendorDir . '/phpxmlrpc/extras/proxy/proxyxmlrpcs.inc',
'xmlrpc_client' => $vendorDir . '/phpxmlrpc/phpxmlrpc/lib/xmlrpc.inc',
'xmlrpc_server' => $vendorDir . '/phpxmlrpc/phpxmlrpc/lib/xmlrpcs.inc',
'xmlrpcmsg' => $vendorDir . '/phpxmlrpc/phpxmlrpc/lib/xmlrpc.inc',
'xmlrpcresp' => $vendorDir . '/phpxmlrpc/phpxmlrpc/lib/xmlrpc.inc',
'xmlrpcval' => $vendorDir . '/phpxmlrpc/phpxmlrpc/lib/xmlrpc.inc',
);
<?php
namespace app\controllers;
use yii\web\Response;
use xmlrpc_server;
use xmlrpcval;
use xmlrpcresp;
class XmlrpcController extends \yii\web\Controller
{
public $layout = false;
public $enableCsrfValidation = false;
public function actionIndex()
{
// let composer do the autoloading
//require_once(dirname(__DIR__).'/vendor/phpxmlrpc/phpxmlrpc/lib/xmlrpc.inc');
//require_once(dirname(__DIR__).'/vendor/phpxmlrpc/phpxmlrpc/lib/xmlrpcs.inc');
$methods = array(
'getConfigAll' => array(
'function' => 'app\controllers\XMLRPCController::getConfig',
'docstring' => 'this method returns all config items',
'signature' => array(array('struct')),
),
);
$srv = new xmlrpc_server($methods, false);
$srv->service();
// avoid Yii from interfering
//return $this->render('index');
$response = new Response();
$response->data = '';
$response->format = Response::FORMAT_RAW;
return $response;
}
public static function getConfig($m)
{
return new xmlrpcresp(new xmlrpcval(
array(
"name" => new xmlrpcval("Tom", "string"),
"age" => new xmlrpcval(34, "int"),
"address" => new xmlrpcval(
array(
"street" => new xmlrpcval("Fifht Ave", "string"),
"city" => new xmlrpcval("NY", "string")
),
"struct")
),
"struct"));
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment