ThinkPHP采用模块和操作分析


Posted in PHP onApril 18, 2011

任何一个WEB行为都可以认为是一个模块的某个操作,系统会根据当前的URL来分析要执行的模块和操作。这个分析工作由URL调度器来实现,官方内置了Dispatcher类来完成该调度。 在Dispatcher调度器中,会根据
http://servername/appName/moduleName/actionName/params
来获取当前需要执行的项目(appName)、 模块(moduleName)和操作(actionName),在某些情况下,appName可以不需要(通常是网站的首页,因为项目名称可以在入口文件 中指定,这种情况下,appName就会被入口文件替代)。在复杂一点的情况下面,可能还会出现分组(groupName)。
每个模块是一个Action文件,类似于我们平常所说的控制器,系统会自动寻找项目类库Action目录下面的相关类,如果没有找到,则会定位到空模块,否则抛出异常。
而actionName操作是首先判断是否存在Action类的公共方法,如果不存在则会继续寻找父类中的方法,如果依然不存在,就会寻找是否存在自动匹配的模版文件。如果存在模版文件,那么就直接渲染模版输出。
因此应用开发中的一个重要过程就是给不同的模块定义具体的操作。一个应用如果不需要和数据库交互的时候可以不需要定义模型类,但是必须定义Action控制器。 Action控制器的定义非常简单,只要继承Action基础类就可以了,例如:microfiber cloth

class UserAction extends Action{ 
}

如果我们要执行下面的URL
http://servername/index.php/User/add
你需要增加一个add方法就可以了,例如
折叠PHP Code复制内容到剪贴板
class UserAction extends Action{ 
// 定义一个add操作方法,注意操作方法不需要任何参数 
Public function add(){ 
// add操作方法的逻辑实现 
// …… bath rug 
$this->display(); // 输出模板页面 
} 
}

操作方法必须定义为Public类型,否则会报错。并注意操作方法的命名不要和内置的Action类的方法重复。系统会自动定位当前操作的模板文件,而默认的模板文件应该位于项目目录下面的Tpl\default\User\add.html。
PHP 相关文章推荐
一篇入门的php Class 文章
Apr 04 PHP
PHP通用分页类page.php[仿google分页]
Aug 31 PHP
php 提速工具eAccelerator 配置参数详解
May 16 PHP
php之CodeIgniter学习笔记
Jun 17 PHP
PHP中怎样保持SESSION不过期 原理及方案介绍
Aug 08 PHP
php中的boolean(布尔)类型详解
Oct 28 PHP
phpQuery占用内存过多的处理方法
Nov 13 PHP
Yii 快速,安全,专业的PHP框架
Sep 03 PHP
win7系统配置php+Apache+mysql环境的方法
Aug 21 PHP
PHP+ajax分页实例简析
Dec 07 PHP
Zend Framework框架教程之Zend_Db_Table_Rowset用法实例分析
Mar 21 PHP
yii2.0框架实现上传excel文件后导入到数据库的方法示例
Apr 13 PHP
PHP学习之数组值的操作
Apr 17 #PHP
PHP学习之数组的定义和填充
Apr 17 #PHP
PHP学习之正则表达式
Apr 17 #PHP
PHP学习之字符串比较和查找
Apr 17 #PHP
PHP学习之整理字符串
Apr 17 #PHP
PHP学习之输出字符串(echo,print,printf,print_r和var_dump)
Apr 17 #PHP
PHP基础学习小结
Apr 17 #PHP
You might like
PHP 中执行系统外部命令
2006/10/09 PHP
php类中的$this,static,final,const,self这几个关键字使用方法
2015/12/14 PHP
CI框架的安全性分析
2016/05/18 PHP
PHP搭建大文件切割分块上传功能示例
2017/01/04 PHP
PHP策略模式定义与用法示例
2017/07/27 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
解析offsetHeight,clientHeight,scrollHeight之间的区别
2013/11/20 Javascript
怎么选择Javascript框架(Javascript Framework)
2013/11/22 Javascript
js如何获取兄弟、父类等节点
2014/01/06 Javascript
JavaScript计算某一天是星期几的方法
2015/08/05 Javascript
使用bootstrap typeahead插件实现输入框自动补全之问题及解决办法
2016/07/07 Javascript
浅谈jQuery中的$.extend方法来扩展JSON对象
2017/02/12 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
微信小程序自定义键盘 内部虚拟支付
2018/12/20 Javascript
jquery实现图片放大镜效果
2020/12/23 jQuery
[00:27]DOTA2次级职业联赛 - Lilith战队宣传片
2014/12/01 DOTA
[54:02]2018DOTA2亚洲邀请赛 4.1 小组赛 B组 IG vs VGJ.T
2018/04/03 DOTA
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
Python Deque 模块使用详解
2014/07/04 Python
python操作CouchDB的方法
2014/10/08 Python
10款最好的Web开发的 Python 框架
2015/03/18 Python
对python中的iter()函数与next()函数详解
2018/10/18 Python
Python Sympy计算梯度、散度和旋度的实例
2019/12/06 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
CSS3 实现时间轴动画
2020/11/25 HTML / CSS
html5 Canvas画图教程(1)—画图的基本常识
2013/01/09 HTML / CSS
英国工具中心:UK Tool Centre
2017/07/10 全球购物
Ibatis如何使用动态表名
2015/07/12 面试题
石油大学毕业生自荐信
2014/01/28 职场文书
《临死前的严监生》教学反思
2014/02/13 职场文书
秘书英文求职信
2014/04/16 职场文书
建筑工地大门标语
2014/06/18 职场文书
银行柜员求职自荐书
2014/06/18 职场文书
2014年音乐教师工作总结
2014/12/03 职场文书
2014年班级工作总结范文
2014/12/23 职场文书
给校长的建议书作文500字
2015/09/14 职场文书