php - symfony 如何解析和使用注解
问题描述
例如,使用 Symfony 注释进行路由是相当惊人的,但我想知道这个框架是如何解析注释并提取注释的?例如:
/**
* @Route("/tehran", name="tehran")
*/
然后将其用作下一个控制器方法的路由。
解决方案
Symfony 使用 Doctrine Annotations 模块从你的类中解析文档块。
看:
https://github.com/doctrine/annotations
https://www.doctrine-project.org/projects/doctrine-annotations/en/current/index.html
它使用反射类来读取注释
https://secure.php.net/manual/fr/book.reflection.php
Symfony 将在第一次运行时从您的注释中读取(并缓存已解析的路由)。然后使用 UrlMatcher 将路由与当前请求匹配。
https://github.com/symfony/symfony/blob/3.2/src/Symfony/Component/Routing/Matcher/UrlMatcher.php
推荐阅读
- laravel - 使用 Laravel 配置 Omnipay-stripe 以与 PCI SCA 一起使用
- python - 二维和一维 numpy 的笛卡尔积
- java - 在 Java 中使用“Sqlldr”获取异常无法运行程序“sqlldr”:CreateProcess error=2,系统找不到指定的文件
- scala - 貘, Circe, 图式
- google-api - 如何获取 Google Fit API 的用户 ID?
- javascript - Bootstrap 4 file input with bs-custom-file-input and Symfony 5 collection with dynamic upload fields
- perl - Perl 和契约式设计
- typescript - 如何在分叉包上使用 DefinedlyTyped 类型?
- c# - 合并来自具有相同 UserId 的 2 个不同列表的 2 行?
- python - 如何结合子查询、最大记录的排序和分组?