【发布时间】:2013-11-07 20:18:27
【问题描述】:
我正在构建一个 PHP 框架来结束我的课程,我一直坚持一个解决方案来匹配一些自定义路由和标准路由。
我的框架的路由与 Zend Framework 1 的路由相似。
匹配标准路线
/module/controller/action/param/value/param2/value2/paramn/valuen
URI部分是可选的,/路由指向应用模块、索引控制器和索引动作,没有参数和值。
我陷入了一些自定义路线,我是这样定义的:
/blog/:postname/
/admin/logout/
/blog/posts/:year/:category/
/about/
该路由必须匹配此示例 URI 请求。
/blog/my-first-post/
/blog/my-first-post/referenced/facebook/
/admin/logout/
/admin/logout/session-id/246753/action
/blog/posts/2013/turism/
/blog/posts/2013/turism/page/2/
但不必匹配标准路线。自定义路由必须在标准路由之前。 标准路线的一些示例。例子:
/
/application/
/application/index/
/application/index/index/
/blog/posts/view/id/3/
/admin/login/
/admin/login/logout (that one are the
/admin/blog/posts/edit/id/3/
/admin/blog/posts/edit/id/3/success/false/
我发现优雅地做到这一点的方法是使用 RegEx 进行比赛,但我已经尝试学习 RegEx 一个多月了,但并没有完全掌握。
PS:匹配当前路由后,我必须将 :variable 绑定到 REQUEST_URI 中的相关位置。
感谢您的帮助。
【问题讨论】: