【问题标题】:In Symfony (2.3) is there any difference between equals and colon in route annotations?在 Symfony (2.3) 中,路由注释中的等号和冒号有什么区别吗?
【发布时间】:2015-04-15 03:04:03
【问题描述】:

文档中使用了 2 种语法。用 ':' 或 '=' 分隔值。有什么区别吗?

http://symfony.com/doc/2.3/book/routing.html

/**
 * @Route(
 *     "/articles/{_locale}/{year}/{title}.{_format}",
 *     defaults={"_format": "html"},
 *     requirements={
 *         "_locale": "en|fr",
 *         "_format": "html|rss",
 *         "year": "\d+"
 *     }
 * )
 */

http://symfony.com/doc/2.3/bundles/SensioFrameworkExtraBundle/annotations/routing.html

 * @Route("/{id}", requirements={"id" = "\d+"}, defaults={"id" = 1})

【问题讨论】:

    标签: php symfony routes


    【解决方案1】:

    据我所知,您最终使用哪种语法没有区别。注释阅读器接受两者作为有效的 key => value 语法。

    我做了一些调试,看看如果你同时通过这两种语法会不会有什么不同。

    一个简单的控制器(带有您提供的注释):

    class TestController extends Controller {
    
        /**
        * @Route(
        *     "/articles/{_locale}/{year}/{title}.{_format}",
        *     defaults={"_format": "html"},
        *     requirements={
        *         "_locale" = "en|fr",
        *         "_format": "html|rss",
        *         "year": "\d+"
        *     }
        * )
        */
        public function testRouteAction() {
            return new Response();
        }
    
    }
    

    如您所见,我对 _locale 使用“=”,对 _format 使用“:” .

    然后我转储了所有传递给 AnnotationLoader 的路由集合。如果您有兴趣,您可以自己查找并进行一些转储。加载器的命名空间是 Symfony\Component\Routing\Loader\AnnotationClassLoader,可以在供应商 symfony/symfony 中找到。

    大部分魔法发生在方法 addRoute() 中,该方法接受少量参数,其中之一是 Sensio\Bundle\FrameworkExtraBundle\Configuration\Route 的实例,它持有你的解析路线及其所有选项。转储变量 $requirements 我们可以看到带有要求的格式化数组:

    array (size=3)
      '_locale' => string 'en|fr' (length=5)
      '_format' => string 'html|rss' (length=8)
      'year' => string '\d+' (length=3)
    

    所以,总结一下 - 不,我相信你将使用哪种语法没有太大区别。

    - 编辑-

    提示:如果您也尝试进行一些调试,请不要忘记清除缓存(环境无关紧要),否则您将看不到结果。

    【讨论】:

    • 是的,这符合我们的经验。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-11
    • 2016-08-31
    • 2019-01-18
    • 2012-05-12
    相关资源
    最近更新 更多