phpgt/routing

将HTTP请求路由到您的代码。

维护者

详细信息

github.com/PhpGt/Routing

源代码

问题

资助包维护!
PhpGt

v1.1.2 2023-10-24 17:57 UTC

README

当应用程序收到HTTP请求时,需要调用适当的逻辑方法,并加载某些文件以构建请求的正确视图。这是通过获取HTTP请求并将其 路由 到应用程序源代码的匹配区域来完成的。

该存储库将路由的概念分解为三个责任区域

  1. 将HTTP请求匹配到适当的回调函数。
  2. 创建与请求匹配的逻辑和视图文件的集合。
  3. 处理这些集合,以创建正确的HTTP响应。

在提及此存储库中的请求时,我们始终是指一个 PSR-7 HTTP消息

Build status Code quality Code coverage Current version PHP.G/Routing documentation

计划

主流程

  • 您的应用程序可以在项目根目录中有一个 router.php 文件,但由于WebEngine提供了 router.default.php,因此这是完全可选的。您可以使用router.php文件来添加复杂的规则,定义用于构建响应的源文件,而不是始终受限于使用基于路径的规则,正如WebEngine目前所做的那样。
  • 应用程序路由器的名称在配置中通过app_router_path键定义。
  • 应用程序路由器在应用程序的根命名空间中定义了一个名为 Router 的类,它扩展了 Gt\Routing\AbstractRouter
  • 调用BaseRouter的 go() 方法,提供一个PSR-7 RequestInterface,这将调用应用程序路由器中的函数。
  • 应用程序路由器可以有任意数量的函数。通过添加扩展Route的属性,它们被制成“可路由的”。可用的属性包括GetPost(和其他HTTP动词)或Any以匹配所有动词。
  • 最简单的可路由函数具有无参数的Any属性(#[Any()]),它将执行每个请求。
  • 可用的属性参数包括:name为路由提供一个名称以供将来参考,accept提供要匹配请求的Accept头的内容类型,path定义一个匹配路径(带模式匹配),function定义要调用的函数。
  • 只有具有与传入请求匹配属性的函数才会执行。
  • 应用程序的可路由函数的职责是为路由器的Assembly对象添加适当的视图和逻辑文件。然后,框架(以我为例的WebEngine)将使用这些Assembly对象构建适当的View并按正确的顺序执行适当的Logic对象。

待办事项列表

  • 当有多个匹配项时执行内容协商。例如:API路由可能明确接受“application/xml”,但网络浏览器的默认接受头也发送此内容,但对于页面请求,它给出了q=0.9的值 - 只要存在具有更高q值的text/html或application/xhtml+xml的路由,就应该优先考虑。
  • 接收RequestInterface和项目目录,并构建适当的Assembly对象 - 将URL路径与目录路径匹配,在适当的位置提取动态路径。