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
php5 and xml示例
Nov 22 PHP
PHP连接SQLServer2005 的问题解决方法
Jul 19 PHP
php调用shell的方法
Nov 05 PHP
php获取访问者IP地址汇总
Apr 24 PHP
php源码分析之DZX1.5随机数函数random用法
Jun 17 PHP
php编写简单的文章发布程序
Jun 18 PHP
基于JQuery+PHP编写砸金蛋中奖程序
Sep 08 PHP
PHP实现图片不变型裁剪及图片按比例裁剪的方法
Jan 14 PHP
Laravel框架实现的记录SQL日志功能示例
Jun 19 PHP
PHP attributes()函数讲解
Feb 03 PHP
PHP创建XML的方法示例【基于DOMDocument类及SimpleXMLElement类】
Sep 10 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多个版本的分析解释
2011/07/21 PHP
php出现内存位置访问无效错误问题解决方法
2014/08/16 PHP
PHP类和对象相关系统函数与运算符小结
2016/09/28 PHP
jquery 操作单选框,复选框,下拉列表实现代码
2009/10/27 Javascript
左右悬浮可分组的网站QQ在线客服代码(可谓经典)
2012/12/21 Javascript
javascript里模拟sleep(两种实现方式)
2013/01/25 Javascript
jquery简单实现滚动条下拉DIV固定在头部不动
2013/11/25 Javascript
使用JavaScript进行进制转换将字符串转换为十进制
2014/09/21 Javascript
zepto.js中tap事件阻止冒泡的实现方法
2015/02/12 Javascript
jQuery CSS3自定义美化Checkbox实现代码
2016/05/12 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
微信小程序封装http访问网络库实例代码
2017/05/24 Javascript
Angular4绑定html内容出现警告的处理方法
2017/11/03 Javascript
Canvas实现微信红包照片效果
2018/08/21 Javascript
es6 filter() 数组过滤方法总结
2019/04/03 Javascript
JavaScript函数式编程(Functional Programming)组合函数(Composition)用法分析
2019/05/22 Javascript
vue瀑布流组件实现上拉加载更多
2020/03/10 Javascript
Python模拟登录12306的方法
2014/12/30 Python
python实现在字符串中查找子字符串的方法
2015/07/11 Python
Python图片裁剪实例代码(如头像裁剪)
2017/06/21 Python
django rest framework之请求与响应(详解)
2017/11/06 Python
python爬取淘宝商品详情页数据
2018/02/23 Python
10款最佳Python开发工具推荐,每一款都是神器
2020/10/15 Python
美国女性卫生用品公司:Thinx
2017/06/30 全球购物
Clarks其乐鞋荷兰官网:Clarks荷兰
2019/07/05 全球购物
Kusmi茶美国官网:优质散叶茶和茶包
2019/10/13 全球购物
捷克购买家具网站:JENA nábytek
2020/03/19 全球购物
C#笔试题集合
2013/06/21 面试题
《小鹰学飞》教学反思
2014/04/23 职场文书
2014工程部年度工作总结
2014/12/17 职场文书
神农溪导游词
2015/02/11 职场文书
2015社区六五普法工作总结
2015/04/21 职场文书
交通事故案件代理词
2015/05/23 职场文书
学生党支部工作总结2015
2015/05/26 职场文书
2016年毕业实习心得体会范文
2015/10/09 职场文书
《学会生存》读后感3篇
2019/12/09 职场文书