One more attempt at fixing unit tests
[plcapi.git] / src / Wrapper.php
index f7f2072..a45100b 100644 (file)
@@ -8,8 +8,7 @@
 namespace PhpXmlRpc;
 
 /**
- * PHP-XMLRPC "wrapper" class.
- * Generate stubs to transparently access xmlrpc methods as php functions and vice-versa.
+ * PHP-XMLRPC "wrapper" class - generate stubs to transparently access xmlrpc methods as php functions and vice-versa.
  * Note: this class implements the PROXY pattern, but it is not named so to avoid confusion with http proxies.
  *
  * @todo use some better templating system for code generation?
@@ -42,6 +41,7 @@ class Wrapper
             case 'integer':
             case Value::$xmlrpcInt: // 'int'
             case Value::$xmlrpcI4:
+            case Value::$xmlrpcI8:
                 return Value::$xmlrpcInt;
             case Value::$xmlrpcDouble: // 'double'
                 return Value::$xmlrpcDouble;
@@ -85,6 +85,7 @@ class Wrapper
                 return Value::$xmlrpcString;
             case 'int':
             case 'i4':
+            case 'i8':
                 return 'integer';
             case 'struct':
             case 'array':
@@ -175,8 +176,7 @@ class Wrapper
 
             $plainFuncName = 'Closure';
             $exists = true;
-        }
-        else {
+        } else {
             $plainFuncName = $callable;
             $exists = function_exists($callable);
         }
@@ -397,7 +397,7 @@ class Wrapper
      * @param array $extraOptions
      * @param string $plainFuncName
      * @param string $funcDesc
-     * @return callable
+     * @return \Closure
      */
     protected function buildWrapFunctionClosure($callable, $extraOptions, $plainFuncName, $funcDesc)
     {
@@ -498,7 +498,7 @@ class Wrapper
      * @param array $extraOptions
      * @param string $plainFuncName
      * @param array $funcDesc
-     * @return array
+     * @return string
      *
      * @todo add a nice phpdoc block in the generated source
      */
@@ -786,7 +786,7 @@ class Wrapper
      * @param string $methodName
      * @param array $extraOptions
      * @param string $mSig
-     * @return callable
+     * @return \Closure
      *
      * @todo should we allow usage of parameter simple_client_copy to mean 'do not clone' in this case?
      */
@@ -822,7 +822,7 @@ class Wrapper
                 $decodeOptions[] = 'decode_php_objs';
             }
 
-            /// @todo check for insufficient nr. of args besides excess ones
+            /// @todo check for insufficient nr. of args besides excess ones? note that 'source' version does not...
 
             // support one extra parameter: debug
             $maxArgs = count($mSig)-1; // 1st element is the return type
@@ -835,11 +835,10 @@ class Wrapper
             $xmlrpcArgs = array();
             foreach($currentArgs as $i => $arg) {
                 if ($i == $maxArgs) {
-                    /// @todo log warning? check what happens with the 'source' version
                     break;
                 }
                 $pType = $mSig[$i+1];
-                if ($pType == 'i4' || $pType == 'int' || $pType == 'boolean' || $pType == 'double' ||
+                if ($pType == 'i4' || $pType == 'i8' || $pType == 'int' || $pType == 'boolean' || $pType == 'double' ||
                     $pType == 'string' || $pType == 'dateTime.iso8601' || $pType == 'base64' || $pType == 'null'
                 ) {
                     // by building directly xmlrpc values when type is known and scalar (instead of encode() calls),
@@ -882,7 +881,7 @@ class Wrapper
      * @param string $mDesc
      * @return array
      */
-    protected function buildWrapMethodSource($client, $methodName, array $extraOptions, $newFuncName, $mSig, $mDesc='')
+    public function buildWrapMethodSource($client, $methodName, array $extraOptions, $newFuncName, $mSig, $mDesc='')
     {
         $timeout = isset($extraOptions['timeout']) ? (int)$extraOptions['timeout'] : 0;
         $protocol = isset($extraOptions['protocol']) ? $extraOptions['protocol'] : '';
@@ -928,7 +927,7 @@ class Wrapper
         for ($i = 1; $i < $pCount; $i++) {
             $plist[] = "\$p$i";
             $pType = $mSig[$i];
-            if ($pType == 'i4' || $pType == 'int' || $pType == 'boolean' || $pType == 'double' ||
+            if ($pType == 'i4' || $pType == 'i8' || $pType == 'int' || $pType == 'boolean' || $pType == 'double' ||
                 $pType == 'string' || $pType == 'dateTime.iso8601' || $pType == 'base64' || $pType == 'null'
             ) {
                 // only build directly xmlrpc values when type is known and scalar
@@ -987,7 +986,7 @@ class Wrapper
      *              - string prefix
      *              - bool   simple_client_copy set it to true to avoid copying all properties of $client into the copy made in the new class
      *
-     * @return mixed false on error, the name of the created class if all ok or an array with code, class name and comments (if the appropriatevoption is set in extra_options)
+     * @return mixed false on error, the name of the created class if all ok or an array with code, class name and comments (if the appropriate option is set in extra_options)
      */
     public function wrapXmlrpcServer($client, $extraOptions = array())
     {