Fix buildWrapFunctionSource which had been forgotten when moving analyzed phpdoc...
[plcapi.git] / src / Wrapper.php
index 2c0d1f7..4b70dc1 100644 (file)
@@ -18,6 +18,9 @@ namespace PhpXmlRpc;
  */
 class Wrapper
 {
+    /// used to hold a reference to object instances whose methods get wrapped by wrap_php_function(), in 'create source' mode
+    public static $objHolder = array();
+
     /**
      * Given a string defining a php type or phpxmlrpc type (loosely defined: strings
      * accepted come from javadoc blocks), return corresponding phpxmlrpc type.
@@ -305,8 +308,8 @@ class Wrapper
         return array(
             'desc' => $desc,
             'docs' => $docs,
-            'params' => $params,
-            'paramDocs' => $paramDocs,
+            'params' => $params, // array, positionally indexed
+            'paramDocs' => $paramDocs, // array, indexed by name
             'returns' => $returns,
             'returnsDocs' =>$returnsDocs,
         );
@@ -493,11 +496,11 @@ class Wrapper
         $pars = array();
         $pNum = count($funcDesc['params']);
         foreach ($funcDesc['params'] as $param) {
-            if (isset($funcDesc['paramDocs'][$i]['name']) && $funcDesc['paramDocs'][$i]['name'] &&
-                strtolower($funcDesc['paramDocs'][$i]['name']) != strtolower($param['name'])) {
-                // param name from phpdoc info does not match param definition!
-                $funcDesc['paramDocs'][$i]['type'] = 'mixed';
-            }
+            /*$name = strtolower($funcDesc['params'][$i]['name']);
+            if (!isset($funcDesc['paramDocs'][$name])) {
+                // no param found in phpdoc info matching param definition!
+                $funcDesc['paramDocs'][$name]['type'] = 'mixed';
+            }*/
 
             if ($param['isoptional']) {
                 // this particular parameter is optional. save as valid previous list of parameters
@@ -541,10 +544,10 @@ class Wrapper
 
         $innerCode .= "\$np = false;\n";
         // since we are building source code for later use, if we are given an object instance,
-        // we go out of our way and store a pointer to it in a global var...
+        // we go out of our way and store a pointer to it in a static class var var...
         if (is_array($callable) && is_object($callable[0])) {
-            $GLOBALS['xmlrpcWPFObjHolder'][$newFuncName] = &$callable[0];
-            $innerCode .= "\$obj =& \$GLOBALS['xmlrpcWPFObjHolder']['$newFuncName'];\n";
+            self::$objHolder[$newFuncName] = $callable[0];
+            $innerCode .= "\$obj = PhpXmlRpc\\Wrapper::\$objHolder['$newFuncName'];\n";
             $realFuncName = '$obj->' . $callable[1];
         } else {
             $realFuncName = $plainFuncName;
@@ -777,6 +780,8 @@ class Wrapper
      * @param array $extraOptions
      * @param string $mSig
      * @return callable
+     *
+     * @todo should we allow usage of parameter simple_client_copy to mean 'do not clone' in this case?
      */
     protected function buildWrapMethodClosure($client, $methodName, array $extraOptions, $mSig)
     {