【问题标题】:SLIM Optional Parameter IssueSLIM 可选参数问题
【发布时间】:2013-08-31 16:05:51
【问题描述】:

我试图在 Slim PHP 中实现这样的目标:

页面/p1/p2/p3/p4

我想要这样

    $app->get('/page(/)(:p1/?)(:p2/?)(:p3/?)(:p4/?)', 
        function ($p1 = null, $p2 = null, $p3 = null, $p4 = null) {
            print empty($p1)? : '' . "p1: $p1/<br/>";
            print empty($p2)? : '' . "p2: $p2/<br/>";
            print empty($p3)? : '' . "p3: $p3/<br/>";
            print empty($p4)? : '' . "id: $p4<br/>";
    });

一切都按预期工作,但问题是每当我从末尾删除一个参数时,它会为我删除的每个参数打印1。 为什么要这样做? 我在这里做错了什么?

【问题讨论】:

    标签: php restful-url slim


    【解决方案1】:

    由于您省略了三元的第二部分(如果测试语句返回true,应该打印什么),三元语句返回测试表达式的计算结果。然后打印出该结果。

    当你省略路由中的最后一个参数时,测试表达式结果为true,但由于你没有定义在这种情况下要做什么,true被返回,1被打印出来。

    试试这个:

    $app->get('/page(/)(:p1/?)(:p2/?)(:p3/?)(:p4/?)', 
        function ($p1 = null, $p2 = null, $p3 = null, $p4 = null) {
            print empty($p1)? "" : '' . "p1: $p1/<br/>";
            print empty($p2)? "" : '' . "p2: $p2/<br/>";
            print empty($p3)? "" : '' . "p3: $p3/<br/>";
            print empty($p4)? "" : '' . "id: $p4<br/>";
    });
    

    现在脚本知道如果其中一个 empty() 表达式返回 true 应该做什么——打印一个空字符串。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多