马春杰杰博客
致力于深度学习经验分享!

Typecho中的路由解析

文章目录
[隐藏]

路由概述

路由的功能简单的说就是根据请求(即URL)找到对应业务代码(或者说控制器,Controller),请求来自用户端,业务由系统提供,路由器的主要任务就是为请求和业务提供一对一的绑定。

目前大部分PHP框架都有路由的概念,譬如ThinkPHP或者CodeIgniter,只不多彼此的实现不太一样。
CodeIgniter中MVC的概念非常强,而Typecho则感觉有点弱化此概念,而采用“Widget”取而代之,即CodeIgniter中Router是将请求路由到Controller,而Typecho中,是将请求路由到Widget。

原理分析

Typecho的路由实现是保存在数据库中的路由表,使用正则匹配路径,这一点和Django框架有点像。Typecho的路由表如下数组组成,路由器类会使用子数组中的regx正则式逐个匹配pathinfo中的路径,如果匹配成功,立即初始化并执行该类对应的action。

以index为例,如果使用正则表达式匹配成功,系统就会新建Widget_Archive类并执行其render方法,看他的名字就知道执行的是渲染页面的方法,也就是之前说的所谓业务。

更详细的路由表,可以参考这里

Typecho路由速查

将Typecho的默认系统路由打出来,方便调试代码时速查~~ [index] => Array ( [url] => / [widget] => Widget_Archive [ac...

时间:2021/4/7 分类:建站教程 人气:68 评论:0

自定义路由

Typecho的路由是保存在MySQL中的,而并非类似CodeIgniter,有特定的匹配模式,此时可能有筒子会质疑,这样的实现会不会对自定义路由非常不友好,不够灵活。
实际上,Typecho是支持自定义路由的,大家可以自由扩展路由表。有兴趣的同学可以去看看Helper类中addRoute()removeRoute()的用法。举个例子,如果你需要自定义一个URL,比如www.typechodev.com/my_page.html,就可以在路由表加入如下路由:

实际添加的路由为:

Helper中addRoute定义

Helper中removeRoute

具体加入自定义路由的时机,可以参考《Typecho插件开发入门》

Typecho插件开发入门教程之HelloWorld

文章目录[隐藏] 基本结构功能实现 任何语言的学习,都是从Hello World开始的,本文也不脱俗,我们也从Hello World来开始我们的学习之旅。 基本结构 1.文件结构 首先是插件的文件构成...

时间:2021/4/7 分类:建站教程 人气:63 评论:0

如果你对这篇文章有什么疑问或建议,欢迎下面留言提出,我看到会立刻回复!

打赏
未经允许不得转载:马春杰杰 » Typecho中的路由解析
蝴蝶PT招人啦

留个评论吧~ 抢沙发 评论前登陆可免验证码!

私密评论
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址(选填,便于回访^_^)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

切换注册

登录

忘记密码 ?

切换登录

注册