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编程网上资源导航
Oct 09 PHP
一个ORACLE分页程序,挺实用的.
Oct 09 PHP
PHP脚本的10个技巧(6)
Oct 09 PHP
PHP新手上路(二)
Oct 09 PHP
php完全过滤HTML,JS,CSS等标签
Jan 16 PHP
PHP CKEditor 上传图片实现代码
Nov 06 PHP
探讨:array2xml和xml2array以及xml与array的互相转化
Jun 24 PHP
深入file_get_contents函数抓取内容失败的原因分析
Jun 25 PHP
php mail to 配置详解
Jan 16 PHP
PHP面向对象程序设计之命名空间与自动加载类详解
Dec 02 PHP
php表单文件iframe异步上传实例讲解
Jul 26 PHP
基于ThinkPHP5框架使用QueryList爬取并存入mysql数据库操作示例
May 25 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年4月新番动漫目录 官方宣布4月播出的作品一览
2020/03/08 日漫
php 更新数据库中断的解决方法
2009/06/05 PHP
SESSION信息保存在哪个文件目录下以及能够用来保存什么类型的数据
2012/06/17 PHP
php jq jquery getJSON跨域提交数据完整版
2013/09/13 PHP
PHP 下载文件时自动添加bom头的方法实例
2014/01/10 PHP
Zend Guard使用指南及问题处理
2015/01/07 PHP
动态加载js文件 document.createElement
2006/10/14 Javascript
Jquery ThickBox插件使用心得(不建议使用)
2010/09/08 Javascript
基于JQuery的抓取博客园首页RSS的代码
2011/12/01 Javascript
javascript中的变量作用域以及变量提升详细介绍
2013/10/24 Javascript
js实现目录定位正文示例
2013/11/14 Javascript
js处理php输出时间戳对不上号的解决方法
2014/06/20 Javascript
javascript的BOM
2016/05/03 Javascript
深入剖析javascript中的exec与match方法
2016/05/18 Javascript
Bootstrap栅格系统的使用和理解2
2016/12/14 Javascript
微信小程序使用slider设置数据值及switch开关组件功能【附源码下载】
2017/12/09 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
详解使用VUE搭建后台管理系统(vue-cli更新至3.0)
2018/08/22 Javascript
手动下载Chrome并解决puppeteer无法使用问题
2018/11/12 Javascript
jQuery实现form表单基于ajax无刷新提交方法实例代码
2019/11/04 jQuery
Element中Slider滑块的具体使用
2020/07/29 Javascript
使用vant的地域控件追加全部选项
2020/11/03 Javascript
Python编程实现蚁群算法详解
2017/11/13 Python
python实现随机森林random forest的原理及方法
2017/12/21 Python
HTML5移动端开发中的Viewport标签及相关CSS用法解析
2016/04/15 HTML / CSS
护士实习生自我鉴定范文
2013/12/10 职场文书
幼儿园教师教学反思
2014/02/06 职场文书
连锁超市项目计划书
2014/09/15 职场文书
群众路线调研报告范文
2014/11/03 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
心得体会该怎么写呢?
2019/06/27 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
MySQL 使用自定义变量进行查询优化
2021/05/14 MySQL
javascript canvas实现雨滴效果
2021/06/09 Javascript
使用feign服务调用添加Header参数
2021/06/23 Java/Android
B站评分公认最好看的动漫,你的名字评分9.9,第六备受喜欢
2022/03/18 日漫