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的范围解析操作符(::)的含义分析说明
Jul 03 PHP
php 获取百度的热词数据的代码
Feb 18 PHP
解析PHP实现下载文件的两种方法
Jul 05 PHP
php的declare控制符和ticks教程(附示例)
Mar 21 PHP
thinkphp实现面包屑导航(当前位置)例子分享
May 10 PHP
php中函数前加&符号的作用分解
Jul 08 PHP
php利用scws实现mysql全文搜索功能的方法
Dec 25 PHP
php判断linux下程序问题实例
Jul 09 PHP
PHP常用的排序和查找算法
Aug 06 PHP
详解WordPress开发中的get_post与get_posts函数使用
Jan 04 PHP
php使用pclzip类实现文件压缩的方法(附pclzip类下载地址)
Apr 30 PHP
Laravel Intervention/image图片处理扩展包的安装、使用与可能遇到的坑详解
Nov 14 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 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
详解php语言最牛掰的Laravel框架
2017/11/20 PHP
PHP 的Opcache加速的使用方法
2017/12/29 PHP
php实现将数组或对象写入到文件的方法小结【三种方法】
2020/04/22 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
javascript实现图片切换的幻灯片效果源代码
2012/12/12 Javascript
代码触发js事件(click、change)示例应用
2013/12/13 Javascript
JavaScript使用二分查找算法在数组中查找数据的方法
2015/04/07 Javascript
跟我学习javascript的this关键字
2020/05/28 Javascript
一系列Bootstrap导航条使用方法分享
2016/04/29 Javascript
Bootstrap中的表单验证插件bootstrapValidator使用方法整理(推荐)
2016/06/21 Javascript
浅述节点的创建及常见功能的实现
2016/12/15 Javascript
js模拟微博发布消息
2017/02/23 Javascript
JS中图片压缩的方法小结
2017/11/14 Javascript
JavaScript中构造函数与原型链之间的关系详解
2019/02/25 Javascript
微信小程序登录session的使用
2019/03/17 Javascript
浅谈vue-router路由切换 组件重用挖下的坑
2019/11/01 Javascript
在VUE中使用lodash的debounce和throttle操作
2020/11/09 Javascript
[47:45]Liquid vs OG 2018国际邀请赛小组赛BO2 第二场 8.16
2018/08/17 DOTA
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
使用python获取csv文本的某行或某列数据的实例
2018/04/03 Python
python 实现分页显示从es中获取的数据方法
2018/12/26 Python
详解Python sys.argv使用方法
2019/05/10 Python
pytorch中使用cuda扩展的实现示例
2020/02/12 Python
利用python实现凯撒密码加解密功能
2020/03/31 Python
python数据处理——对pandas进行数据变频或插值实例
2020/04/22 Python
python golang中grpc 使用示例代码详解
2020/06/03 Python
世界上最大的网络主机公司:1&1
2016/10/12 全球购物
本科生学习总结的自我评价
2013/10/02 职场文书
外贸业务员的岗位职责
2013/11/23 职场文书
心理健康课教学反思
2014/02/13 职场文书
2014年教师业务学习材料
2014/05/12 职场文书
迎七一演讲稿
2014/09/12 职场文书
小学生学习保证书
2015/02/26 职场文书
2015年环卫处个人工作总结
2015/07/27 职场文书