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当前所做的那样,始终限于使用基于路径的规则。
  • 应用的router名称通过配置中的 app_router_path 键定义。
  • 应用router在应用的根命名空间中定义了一个名为 Router 的类,它扩展了 Gt\Routing\AbstractRouter
  • 调用BaseRouter的 go() 方法,提供一个PSR-7 RequestInterface,这将调用应用router的函数。
  • 应用router可以有任意数量的函数。通过添加扩展 Route 的属性来使它们“可路由”。可用的属性包括 GetPost(和其他HTTP动词)或 Any 以匹配所有动词。
  • 最简单的可路由函数具有没有任何参数的Any属性(#[Any()]),它将执行每个请求。
  • 可用的属性参数包括:name 为路由提供名称以供将来引用,accept 提供一个Content-type以匹配请求的 Accept 头,path 定义一个匹配路径(使用模式匹配),function 定义要调用的函数。
  • 只有具有与传入请求匹配的属性的函数才会执行。
  • 应用的可路由函数的职责是向Router的 Assembly 对象添加适当的视图和逻辑文件。然后,框架(以我的案例中的WebEngine为例)将使用Assembly对象构建适当的 View 并以正确的顺序执行适当的 Logic 对象。

待办事项列表

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