phpgt/routing
Composer 安装命令:
composer require phpgt/routing
包简介
Routes HTTP requests to your code.
README 文档
README
As HTTP requests are received by an application, the appropriate logic methods need to be called, along with certain files being loaded to construct the correct view for the request. This is done by taking the HTTP request and routing it to the matching areas of the application source code.
This repository breaks down the concept of routing into three areas of responsibility:
- Matching an HTTP request to an appropriate callback function.
- Creating an Assembly of logic and view files that match the request.
- Processing the Assemblies, in order to create the correct HTTP response.
When referring to Requests within this repository, we are always referring to a PSR-7 HTTP Message.
Planning
Main flow:
- Your application can have a
router.phpin project root, but is completely optional due torouter.default.phpbeing provided by WebEngine. You can use the router.php file to add complicated rules that define which source files are used to build up the response, rather than always being limited to using path-based rules, as is currently the case with WebEngine. - The name of the application's router is defined in config by
app_router_pathkey. - The application router defines a class called
Routerin the application's root namespace, which extendsGT\Routing\AbstractRouter. - BaseRouter's
go()method is called, supplying a PSR-7RequestInterfacewhich will call functions of the application's router. - The application router can have any number of functions. They are made "routable" by adding an Attribute that extends
Route. Available Attributes includeGet,Post(and other HTTP verbs) orAnyto match on all verbs. - The simplest routable function has the Any attribute with no parameters (
#[Any()]), which will be executed for every request. - Available Attribute parameters include:
nameto provide the route a name for future reference,acceptto provide a Content-type to match the Request'sAcceptheader with,pathto define a matching path (with pattern matching),functionto define the function to call. - Only the functions that have Attributes that match the incoming request will be executed.
- It's the job of the application's routable functions to add appropriate view and logic files to the Router's
Assemblyobjects. The framework (WebEngine in my case) will then use the Assembly objects to build up the appropriateViewand execute the appropriateLogicobjects in the correct order.
TODO List:
- Perform content negotiation when there are multiple matches. For example: an API route might explicitly accept "application/xml" but the default accept header of web browsers also sends this for page requests, but it gives it a q=0.9 - as long as there is a route with text/html or application/xhtml+xml with a higher q value, it should be preferred.
- Take a RequestInterface and a project directory, and construct the appropriate Assembly objects - matching the URL path to directory paths, extracting dynamic paths where appropriate.
Proudly sponsored by
phpgt/routing 适用场景与选型建议
phpgt/routing 是一款 基于 PHP 开发的 Composer 扩展包,目前已累计 5.15k 次下载、GitHub Stars 达 0, 最近一次更新时间为 2021 年 06 月 23 日, 在 PHP 生态内属于活跃度较高的组件。
它主要适用于以下技术方向: 「route」 「url」 「view」 「router」 「redirect」 「logic」 等业务场景。在实际项目中,围绕这些方向常见需要落地的问题包括:接口对接、性能调优、并发安全、与既有框架(Laravel / ThinkPHP / Yii / Webman 等)的兼容适配,以及生产环境的日志埋点与稳定性保障。
我们在过去多个企业项目中使用过 phpgt/routing 或与其功能相近的方案,如果你在选型或落地过程中遇到问题,例如 版本兼容、二次改造、私有化封装、与内部系统对接、生产 BUG 排查,欢迎联系我们协助评估。
基于 phpgt/routing 在你已有业务上做功能扩展、字段裁剪、UI 适配、与内部账号 / 权限 / 日志系统的深度对接。
线上偶发问题、内存泄漏、慢查询、并发异常等排查修复;针对高流量场景做缓存、队列、索引层面的调优。
承接完整的项目从需求 → 设计 → 开发 → 上线 → 长期运维;也可按月提供技术保姆服务。
与 phpgt/routing 相关的其它包
同方向 / 同关键字的高下载量 PHP Composer 包推荐,方便对比选型:
Shoot aims to make providing data to your templates more manageable
Provide a way to secure accesses to all routes of an symfony application.
Write down your routing mapping at one place
Easy URL rewrites in your Laravel application
A Laravel-like router for the WordPress Rewrite API
Illuminate View for Morningmedley.
统计信息
- 总下载量: 5.15k
- 月度下载量: 0
- 日度下载量: 0
- 收藏数: 0
- 点击次数: 14
- 依赖项目数: 2
- 推荐数: 0
其他信息
- 授权协议: MIT
- 更新时间: 2021-06-23