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里面的抽象类
Jan 28 PHP
PHP json格式和js json格式 js跨域调用实现代码
Sep 08 PHP
PHP面向对象——访问修饰符介绍
Nov 08 PHP
解析使用ThinkPHP应该掌握的调试手段
Jun 20 PHP
php中base64_decode与base64_encode加密解密函数实例
Nov 24 PHP
php支付宝手机网页支付类实例
Mar 04 PHP
php通过array_merge()函数合并关联和非关联数组的方法
Mar 18 PHP
浅析Yii2 gridview实现批量删除教程
Apr 22 PHP
PHP实现数组array转换成xml的方法
Jul 19 PHP
深入理解PHP中mt_rand()随机数的安全
Oct 12 PHP
PHP addAttribute()函数讲解
Feb 03 PHP
php新建文件的方法实例
Sep 26 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/02/03 PHP
laravel自定义分页的实现案例offset()和limit()
2019/10/15 PHP
laravel 解决ajax异步提交数据,并还回填充表格的问题
2019/10/15 PHP
基于jQuery实现表格数据的动态添加与统计的代码
2011/01/31 Javascript
js模拟滚动条(横向竖向)
2013/02/22 Javascript
如何使Chrome控制台支持多行js模式——意外发现
2013/06/13 Javascript
jquery限定文本框只能输入数字即整数和小数
2013/11/29 Javascript
jQuery实现给页面换肤的方法
2015/05/30 Javascript
JavaScript中的对象与JSON
2015/07/03 Javascript
JS设置cookie、读取cookie
2016/02/24 Javascript
jQuery实现根据生日计算年龄 星座 生肖
2016/11/23 Javascript
BootStrap实现响应式布局导航栏折叠隐藏效果(在小屏幕、手机屏幕浏览时自动折叠隐藏)
2016/11/30 Javascript
node.js中实现kindEditor图片上传功能的方法教程
2017/04/26 Javascript
vue中七牛插件使用的实例代码
2017/07/28 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
2018/09/20 Javascript
python获取糗百图片代码实例
2013/12/18 Python
python的mysqldb安装步骤详解
2017/08/14 Python
实例讲解Python爬取网页数据
2018/07/08 Python
pandas DataFrame 警告(SettingWithCopyWarning)的解决
2019/07/23 Python
Python中变量的输入输出实例代码详解
2019/07/28 Python
pandas数据处理进阶详解
2019/10/11 Python
Python类的绑定方法和非绑定方法实例解析
2020/03/04 Python
PyTorch加载自己的数据集实例详解
2020/03/18 Python
Python logging模块handlers用法详解
2020/08/14 Python
canvas使用注意点总结
2013/07/19 HTML / CSS
一加手机美国官方网站:OnePlus美国
2019/09/19 全球购物
Brother加拿大官网:打印机、贴标机、缝纫机
2019/10/09 全球购物
Made in Design德国:设计师家具、灯具和装饰
2019/10/31 全球购物
实现strstr功能,即在父串中寻找子串首次出现的位置
2016/08/05 面试题
自荐书范文
2013/12/08 职场文书
教师求职信范文
2014/05/24 职场文书
2014年学校党建工作总结
2014/11/11 职场文书
期末复习计划
2015/01/19 职场文书
武侯祠导游词
2015/02/04 职场文书
大学生毕业个人总结
2015/02/15 职场文书
解决linux下redis数据库overcommit_memory问题
2022/02/24 Redis