コード例 #1
0
 /**
  * Returns a help text descibing a given webservice.
  * The help text is generated via introspection from phpdoc comments on the source code.
  * Note that it takes 2 params insted of 1 as this helps clients sending requests:
  * it is hard for ezjscore to send a string param containing two colons in a row...
  * @param string className
  * @param string methodName
  * @return string
  */
 static function methodHelp($params)
 {
     // we can not use ezjscServerRouter::getInstance() to see if method exists,
     // because it checks permissions!
     if (count($params) != 2) {
         throw new Exception(ggWebservicesServer::INVALIDPARAMSERROR . ' ' . ggWebservicesServer::INVALIDPARAMSSTRING);
     }
     $className = array_shift($params);
     $functionName = array_shift($params);
     $ini = eZINI::Instance('ezjscore.ini');
     if ($ini->hasGroup('ezjscServer_' . $className)) {
         if ($ini->hasVariable('ezjscServer_' . $className, 'File')) {
             include_once $ini->variable('ezjscServer_' . $className, 'File');
         }
         if ($ini->hasVariable('ezjscServer_' . $className, 'TemplateFunction')) {
             if ($ini->variable('ezjscServer_' . $className, 'TemplateFunction') === 'true') {
                 return 'No description can be given: method implemented via a template';
             }
         }
         if ($ini->hasVariable('ezjscServer_' . $className, 'Class')) {
             $realclassname = $ini->variable('ezjscServer_' . $className, 'Class');
         } else {
             $realclassname = $className;
         }
         if (class_exists($realclassname)) {
             $reflectionClass = new ReflectionClass($realclassname);
             $reflectionMethod = $reflectionClass->getMethod($functionName);
             if (is_object($reflectionMethod) && $reflectionMethod->isStatic()) {
                 $doc = $reflectionMethod->getDocComment();
                 // Clean up a bit the phpdoc format
                 $doc = preg_replace('#^(/\\*?)#', '', $doc);
                 // opening comment
                 $doc = preg_replace('#(\\*/)$#', '', $doc);
                 // end comment
                 $doc = preg_replace('#^( *\\*)#m', '', $doc);
                 // star on begin of line
                 $doc = preg_replace('#(\\* *)$#m', '', $doc);
                 // star on end of line
                 return $doc;
             }
         } else {
             /// @todo log config error
         }
     }
     throw new Exception(ggWebservicesServer::INVALIDINTROSPECTIONERROR . ' ' . ggWebservicesServer::INVALIDINTROSPECTIONSTRING);
 }