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 相关文章推荐
MYSQL数据库初学者使用指南
Nov 16 PHP
表单复选框向PHP传输数据的代码
Nov 13 PHP
DW中链接mysql数据库时,建立字符集中文出现乱码的解决方法
Mar 27 PHP
PHP取整数函数常用的四种方法小结
Jul 05 PHP
php读取目录及子目录下所有文件名的方法
Oct 20 PHP
php管理nginx虚拟主机shell脚本实例
Nov 19 PHP
PHP实现懒加载的方法
Mar 07 PHP
PHP如何使用Memcached
Apr 05 PHP
PHP实现实时生成并下载超大数据量的EXCEL文件详解
Oct 23 PHP
OAuth认证协议中的HMACSHA1加密算法(实例)
Oct 25 PHP
PHP实现将几张照片拼接到一起的合成图片功能【便于整体打印输出】
Nov 14 PHP
PHP PDOStatement::columnCount讲解
Jan 30 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
2020显卡排行榜天梯图 显卡天梯图2020年3月最新版
2020/04/02 数码科技
咖啡的植物学知识
2021/03/03 咖啡文化
PHP与javascript对多项选择的处理
2006/10/09 PHP
PHP开发过程中常用函数收藏
2009/12/14 PHP
浅析PHP 按位与或 (^ 、&)
2013/06/21 PHP
PHP学习笔记(二) 了解PHP的基本语法以及目录结构
2014/08/04 PHP
PHP对称加密函数实现数据的加密解密
2016/10/27 PHP
Laravel框架实现定时Task Scheduling例子
2019/10/22 PHP
自动更新作用
2006/10/08 Javascript
如何用js控制css中的float的代码
2007/08/16 Javascript
Javascript select控件操作大全(新增、修改、删除、选中、清空、判断存在等)
2008/12/19 Javascript
ExtJS Store的数据访问与更新问题
2010/04/28 Javascript
javascript学习笔记(十) js对象 继承
2012/06/19 Javascript
javascript新建标签,判断键盘输入,以及判断焦点(示例代码)
2013/11/25 Javascript
node.js中的querystring.parse方法使用说明
2014/12/10 Javascript
DOM基础教程之事件对象
2015/01/20 Javascript
jQuery满屏焦点图左右滚动特效代码分享
2015/09/07 Javascript
jQuery基于正则表达式的表单验证功能示例
2017/01/21 Javascript
详解微信小程序Radio选中样式切换
2017/07/06 Javascript
Angular2使用SVG自定义图表(条形图、折线图)组件示例
2019/05/10 Javascript
vue+element加入签名效果(移动端可用)
2019/06/17 Javascript
微信小程序 导入图标实现过程详解
2019/10/11 Javascript
vue 父组件通过$refs获取子组件的值和方法详解
2019/11/07 Javascript
Python中第三方库Requests库的高级用法详解
2017/03/12 Python
Python逐行读取文件中内容的简单方法
2019/02/26 Python
基于wxPython的GUI实现输入对话框(1)
2019/02/27 Python
python简单实现AES加密和解密
2019/03/28 Python
实现Python与STM32通信方式
2019/12/18 Python
Django和Ueditor自定义存储上传文件的文件名
2021/02/25 Python
canvas绘图按照contain或者cover方式适配并居中显示
2019/02/18 HTML / CSS
小学教师学期末自我评价
2013/09/25 职场文书
怎样写好自我评价呢?
2014/02/16 职场文书
入党积极分子评语
2014/05/04 职场文书
环境工程专业毕业生求职信
2014/09/30 职场文书
单位婚育证明范本
2014/11/21 职场文书
美甲店的创业计划书模板
2019/08/23 职场文书