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代码的53条建议
Mar 27 PHP
PHP 文件缓存的性能测试
Apr 25 PHP
使用PHPMyAdmin修复论坛数据库的图文方法
Jan 09 PHP
PHP中4个加速、缓存扩展的区别和选用建议
Mar 12 PHP
php中get_meta_tags()、CURL与user-agent用法分析
Dec 16 PHP
php查询mssql出现乱码的解决方法
Dec 29 PHP
PHP中让curl支持sock5的代码实例
Jan 21 PHP
PHP使用JSON和将json还原成数组
Feb 12 PHP
php单例模式实现方法分析
Mar 14 PHP
php实现的双色球算法示例
Jun 20 PHP
thinkPHP5框架实现基于ajax的分页功能示例
Jun 12 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
Oct 08 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程序时遇到的三个问题
2012/01/17 PHP
全新Mac配置PHP开发环境教程
2016/02/03 PHP
php车辆违章查询数据示例
2016/10/14 PHP
php数据序列化测试实例详解
2017/08/12 PHP
php识别翻转iphone拍摄的颠倒图片
2018/05/17 PHP
jQuery使用手册之三 CSS操作
2007/03/24 Javascript
推荐自用 Javascript 缩图函数 (onDOMLoaded)……
2007/10/23 Javascript
return false;和e.preventDefault();的区别
2010/07/11 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
用于节点操作的API,颠覆原生操作HTML DOM节点的API
2010/12/11 Javascript
js弹出层(jQuery插件形式附带reLoad功能)
2013/04/12 Javascript
js实现快速分享功能(你的文章分享工具)
2013/06/25 Javascript
使用jquery.upload.js实现异步上传示例代码
2014/07/29 Javascript
jQuery中parentsUntil()方法用法实例
2015/01/07 Javascript
JavaScript中5种调用函数的方法
2015/03/12 Javascript
深入JavaScript高级程序设计之对象、数组(栈方法,队列方法,重排序方法,迭代方法)
2015/12/01 Javascript
JS实现table表格数据排序功能(可支持动态数据+分页效果)
2016/05/26 Javascript
浅谈jquery设置和获得checkbox选中的问题
2016/08/19 Javascript
Bootstrap模态框插入视频的实现代码
2017/06/25 Javascript
利用Javascript获取选择文本所在的句子详解
2017/12/03 Javascript
vue移动端html5页面根据屏幕适配的四种解决方法
2018/10/19 Javascript
JavaScript设计模式之责任链模式实例分析
2019/01/16 Javascript
解决IOS端微信H5页面软键盘弹起后页面下方留白的问题
2019/06/05 Javascript
vue-父子组件和ref实例详解
2019/11/10 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
利用 Monkey 命令操作屏幕快速滑动
2016/12/07 Python
手把手教你python实现SVM算法
2017/12/27 Python
python解压TAR文件至指定文件夹的实例
2019/06/10 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
英国最大的女性服装零售商:Dorothy Perkins
2017/03/30 全球购物
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
《陈涉世家》教学反思
2014/04/12 职场文书
安全目标责任书
2014/07/22 职场文书
2014年英语教研组工作总结
2014/12/06 职场文书
消防验收申请报告
2015/05/15 职场文书
TypeScript 使用 Tuple Union 声明函数重载
2022/04/07 Javascript