* @param array $extraOptions see the docs for wrapPhpMethod for basic options, plus
* - string method_type 'static', 'nonstatic', 'all' and 'auto' (default); the latter will switch between static and non-static depending on whether $className is a class name or object instance
* - string method_filter a regexp used to filter methods to wrap based on their names
- * - string prefix used for the names of the xmlrpc methods created
- *
+ * - string prefix used for the names of the xmlrpc methods created.
+ * - string replace_class_name use to completely replace the class name with the prefix in the generated method names. e.g. instead of \Some\Namespace\Class.method use prefixmethod
* @return array|false false on failure
*/
public function wrapPhpClass($className, $extraOptions = array())
{
$methodFilter = isset($extraOptions['method_filter']) ? $extraOptions['method_filter'] : '';
$methodType = isset($extraOptions['method_type']) ? $extraOptions['method_type'] : 'auto';
- $prefix = isset($extraOptions['prefix']) ? $extraOptions['prefix'] : '';
$results = array();
$mList = get_class_methods($className);
(!$func->isStatic() && ($methodType == 'all' || $methodType == 'nonstatic' || ($methodType == 'auto' && is_object($className))))
) {
$methodWrap = $this->wrapPhpFunction(array($className, $mName), '', $extraOptions);
+
if ($methodWrap) {
- if (is_object($className)) {
- $realClassName = get_class($className);
- }else {
- $realClassName = $className;
- }
- $results[$prefix."$realClassName.$mName"] = $methodWrap;
+ $results[$this->generateMethodNameForClassMethod($className, $mName, $extraOptions)] = $methodWrap;
}
}
}
return $results;
}
+ /**
+ * @param string|object $className
+ * @param string $classMethod
+ * @param array $extraOptions
+ * @return string
+ */
+ protected function generateMethodNameForClassMethod($className, $classMethod, $extraOptions = array())
+ {
+ if (isset($extraOptions['replace_class_name']) && $extraOptions['replace_class_name']) {
+ return (isset($extraOptions['prefix']) ? $extraOptions['prefix'] : '') . $classMethod;
+ }
+
+ if (is_object($className)) {
+ $realClassName = get_class($className);
+ } else {
+ $realClassName = $className;
+ }
+ return (isset($extraOptions['prefix']) ? $extraOptions['prefix'] : '') . "$realClassName.$classMethod";
+ }
+
/**
* Given an xmlrpc client and a method name, register a php wrapper function
* that will call it and return results using native php types for both