在restler中使用驼峰外壳作为函数名

时间:2011-12-12 19:32:48

标签: php restler

This is the web service file _ws.php
<?php
/*
 Title: Hello World Example.
 Tagline: Let's say hello!.
 Description: Basic hello world example to get started with Restler 2.0.
 Example 1: GET say/hello returns "Hello world!".
 Example 2: GET say/hello/restler2.0 returns "Hello Restler2.0!".
 Example 3: GET say/hello?to=R.Arul%20Kumaran returns "Hello R.Arul Kumaran!".
 */
require_once '../restler/restler.php';
require_once 'news_class.php';
$r = new Restler();
$r->addAPIClass('news');
$r->handle();

这是包含以下功能的类文件:

<?php
class news {
    function hello($to='world') {
        return "Hello $to!";
    }

    function listnews($page=0){
        $result = "";

        $xml_doc = new DOMDocument;
        $xml_doc->load('news.xml');

        $xsl_doc = new DOMDocument;
        $xsl_doc->load('news_list.xsl');

        $xsl_proc = new XSLTProcessor();
        $xsl_proc->importStyleSheet($xsl_doc);
        $xsl_proc->setParameter('', 'page', $page);
        $result = $xsl_proc->transformToXml($xml_doc);

        return $result;
    }


} // news -

如果我将listnews函数命名为listNews,我会收到此错误:

{
  "error": {
    "code": 404,
    "message": "Not Found"
  }
}

只要名称现在是混合大小写,它就有效。 是假设是这样的吗?有没有办法使用骆驼套管?

THX!

2 个答案:

答案 0 :(得分:0)

只是为了重新审视这个,我一直在玩代码,我得到了类似的行为。我的方法的以下命名约定导致404错误:

mysite.com/myclass/testMethod
mysite.com/myclass/TestMethod

按预期进行以下工作

mysite.com/myclass/testmethod
mysite.com/myclass/test_method

以任何方式(我错过了或以其他方式)让Camel Case工作?

更新:方法名称似乎没有导致错误,例如我可以将它命名为testMethod,并仍以小写字母命名。

答案 1 :(得分:0)

@richard_askew的答案更新,他是对的。

当我们在Restler版本2.1.5或更低版本中使用自动路由时,类名,方法名称和参数名称在放入URL时必须全部小写

我们刚刚发布了 Restler版本2.1.6 ,它改变了这种行为:)

现在,在任何情况下(上层或下层或混合),在网址中指定的类名,方法名和参数名都将与正确的方法匹配