{
/**
* Method used to test logging of php warnings generated by user functions.
+ * @param PhpXmlRpc\Request $req
+ * @return PhpXmlRpc\Response
*/
public function phpWarningGenerator($req)
{
/**
* Method used to test catching of exceptions in the server.
+ * @param PhpXmlRpc\Request $req
+ * @throws Exception
*/
public function exceptionGenerator($req)
{
throw new Exception("it's just a test", 1);
}
+ /**
+ * @param string $msg
+ */
+ public function debugMessageGenerator($msg)
+ {
+ PhpXmlRpc\Server::xmlrpc_debugmsg($msg);
+ }
+
/**
* A PHP version of the state-number server. Send me an integer and i'll sell you a state.
* Used to test wrapping of PHP methods into xmlrpc methods.
$wrapper = new PhpXmlRpc\Wrapper();
-$findstate2_sig = $wrapper->wrap_php_function('inner_findstate');
+$findstate2_sig = $wrapper->wrapPhpFunction('inner_findstate');
-$findstate3_sig = $wrapper->wrap_php_function(array('xmlrpcServerMethodsContainer', 'findState'));
+$findstate3_sig = $wrapper->wrapPhpFunction(array('xmlrpcServerMethodsContainer', 'findState'));
$obj = new xmlrpcServerMethodsContainer();
-$findstate4_sig = $wrapper->wrap_php_function(array($obj, 'findstate'));
+$findstate4_sig = $wrapper->wrapPhpFunction(array($obj, 'findstate'));
-$findstate5_sig = $wrapper->wrap_php_function('xmlrpcServerMethodsContainer::findState', '', array('return_source' => true));
+$findstate5_sig = $wrapper->wrapPhpFunction('xmlrpcServerMethodsContainer::findState', '', array('return_source' => true));
eval($findstate5_sig['source']);
-$findstate6_sig = $wrapper->wrap_php_function('inner_findstate', '', array('return_source' => true));
+$findstate6_sig = $wrapper->wrapPhpFunction('inner_findstate', '', array('return_source' => true));
eval($findstate6_sig['source']);
-$findstate7_sig = $wrapper->wrap_php_function(array('xmlrpcServerMethodsContainer', 'findState'), '', array('return_source' => true));
+$findstate7_sig = $wrapper->wrapPhpFunction(array('xmlrpcServerMethodsContainer', 'findState'), '', array('return_source' => true));
eval($findstate7_sig['source']);
$obj = new xmlrpcServerMethodsContainer();
-$findstate8_sig = $wrapper->wrap_php_function(array($obj, 'findstate'), '', array('return_source' => true));
+$findstate8_sig = $wrapper->wrapPhpFunction(array($obj, 'findstate'), '', array('return_source' => true));
eval($findstate8_sig['source']);
-$findstate9_sig = $wrapper->wrap_php_function('xmlrpcServerMethodsContainer::findState', '', array('return_source' => true));
+$findstate9_sig = $wrapper->wrapPhpFunction('xmlrpcServerMethodsContainer::findState', '', array('return_source' => true));
eval($findstate9_sig['source']);
$findstate10_sig = array(
"docstring" => $findstate_doc,
);
-$findstate11_sig = $wrapper->wrap_php_function(function ($stateNo) { return inner_findstate($stateNo); });
+$findstate11_sig = $wrapper->wrapPhpFunction(function ($stateNo) { return inner_findstate($stateNo); });
$c = new xmlrpcServerMethodsContainer;
-$moreSignatures = $wrapper->wrap_php_class($c, array('prefix' => 'tests.', 'method_type' => 'all'));
+$moreSignatures = $wrapper->wrapPhpClass($c, array('prefix' => 'tests.', 'method_type' => 'all'));
+
+$returnObj_sig = $wrapper->wrapPhpFunction(array($c, 'returnObject'), '', array('encode_php_objs' => true));
+
+// used to test signatures with NULL params
+$findstate12_sig = array(
+ array(Value::$xmlrpcString, Value::$xmlrpcInt, Value::$xmlrpcNull),
+ array(Value::$xmlrpcString, Value::$xmlrpcNull, Value::$xmlrpcInt),
+);
+
+function findStateWithNulls($req)
+{
+ $a = $req->getParam(0);
+ $b = $req->getParam(1);
-$returnObj_sig = $wrapper->wrap_php_function(array($c, 'returnObject'), '', array('encode_php_objs' => true));
+ if ($a->scalartyp() == Value::$xmlrpcNull)
+ return new PhpXmlRpc\Response(new Value(inner_findstate($b->scalarval())));
+ else
+ return new PhpXmlRpc\Response(new Value(inner_findstate($a->scalarval())));
+}
$addtwo_sig = array(array(Value::$xmlrpcInt, Value::$xmlrpcInt, Value::$xmlrpcInt));
$addtwo_doc = 'Add two integers together and return the result';
function bitFlipper($req)
{
$v = $req->getParam(0);
- $sz = $v->arraysize();
$rv = new Value(array(), Value::$xmlrpcArray);
- for ($j = 0; $j < $sz; $j++) {
- $b = $v->arraymem($j);
+ foreach ($v as $b) {
if ($b->scalarval()) {
$rv->addScalar(false, "boolean");
} else {
$v = new Value();
$agar = array();
- $max = $sno->arraysize();
+ $max = $sno->count();
PhpXmlRpc\Server::xmlrpc_debugmsg("Found $max array elements");
- for ($i = 0; $i < $max; $i++) {
- $rec = $sno->arraymem($i);
+ foreach ($sno as $rec) {
if ($rec->kindOf() != "struct") {
$err = "Found non-struct in array at element $i";
break;
function setCookies($req)
{
$encoder = new PhpXmlRpc\Encoder();
- $m = $req->getParam(0);
- while (list($name, $value) = $m->structeach()) {
+ $cookies = $req->getParam(0);
+ foreach ($cookies as $name => $value) {
$cookieDesc = $encoder->decode($value);
setcookie($name, @$cookieDesc['value'], @$cookieDesc['expires'], @$cookieDesc['path'], @$cookieDesc['domain'], @$cookieDesc['secure']);
}
{
$sno = $req->getParam(0);
$numCurly = 0;
- for ($i = 0; $i < $sno->arraysize(); $i++) {
- $str = $sno->arraymem($i);
- $str->structreset();
- while (list($key, $val) = $str->structeach()) {
+ foreach ($sno as $str) {
+ foreach ($str as $key => $val) {
if ($key == "curly") {
$numCurly += $val->scalarval();
}
function v1_moderateSizeArrayCheck($req)
{
$ar = $req->getParam(0);
- $sz = $ar->arraysize();
+ $sz = $ar->count();
$first = $ar->arraymem(0);
$last = $ar->arraymem($sz - 1);
'tests.getStateName.10' => $findstate10_sig,
'tests.getStateName.11' => $findstate11_sig,
+ 'tests.getStateName.12' => array(
+ "function" => "findStateWithNulls",
+ "signature" => $findstate12_sig,
+ "docstring" => $findstate_doc,
+ ),
+
'tests.returnPhpObject' => $returnObj_sig,
);
$signatures = array_merge($signatures, $moreSignatures);
+// enable support for the NULL extension
+PhpXmlRpc\PhpXmlRpc::$xmlrpc_null_extension = true;
+
$s = new PhpXmlRpc\Server($signatures, false);
$s->setdebug(3);
$s->compress_response = true;