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 相关文章推荐
不用GD库生成当前时间的PNG格式图象的程序
Oct 09 PHP
一个php作的文本留言本的例子(四)
Oct 09 PHP
用php获取远程图片并把它保存到本地的代码
Apr 07 PHP
PHP PDO函数库详解
Apr 27 PHP
php4与php5的区别小结(配置异同)
Dec 20 PHP
在windows服务器开启php的gd库phpinfo中未发现
Jan 13 PHP
phpmailer中文乱码问题的解决方法
Apr 22 PHP
PHP实现的增强性mhash函数
May 27 PHP
深入探究PHP的多进程编程方法
Aug 18 PHP
功能强大的PHP发邮件类
Aug 29 PHP
PHP序列化操作方法分析
Sep 28 PHP
php简单实现文件或图片强制下载的方法
Dec 06 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中的cookie
2006/11/26 PHP
Apache环境下PHP利用HTTP缓存协议原理解析及应用分析
2010/02/16 PHP
PHP的几个常用数字判断函数代码
2012/04/24 PHP
PHP手机号码归属地查询代码(API接口/mysql)
2012/09/04 PHP
PHP使用ob_start生成html页面的方法
2014/11/07 PHP
PHP微信发送推送消息乱码的解决方法
2019/02/28 PHP
Laravel中10个有用的用法小结
2019/05/06 PHP
一些技巧性实用js代码小结
2009/10/14 Javascript
JQuery自适应IFrame高度(支持嵌套 兼容IE,ff,safafi,chrome)
2011/03/28 Javascript
最新的10款jQuery内容滑块插件分享
2011/09/18 Javascript
NodeJS的模块写法入门(实例代码)
2012/03/07 NodeJs
javascript full screen 全屏显示页面元素的方法
2013/09/27 Javascript
js实现div的切换特效上一个下一个
2014/02/11 Javascript
JavaScript随机生成信用卡卡号的方法
2015/04/07 Javascript
微信内置浏览器私有接口WeixinJSBridge介绍
2015/05/25 Javascript
基于JS实现checkbox全选功能实例代码
2016/10/31 Javascript
浅谈Node.js轻量级Web框架Express4.x使用指南
2017/05/03 Javascript
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
跟老齐学Python之类的细节
2014/10/13 Python
Python写入CSV文件的方法
2015/07/08 Python
python生成验证码图片代码分享
2016/01/28 Python
Python基于高斯消元法计算线性方程组示例
2018/01/17 Python
Python中实现单例模式的n种方式和原理
2018/11/14 Python
python 检查是否为中文字符串的方法
2018/12/28 Python
pycharm的console输入实现换行的方法
2019/01/16 Python
python中bytes和str类型的区别
2019/10/21 Python
python3连接kafka模块pykafka生产者简单封装代码
2019/12/23 Python
Python实现鼠标自动在屏幕上随机移动功能
2020/03/14 Python
英国豪华装饰照明品牌的在线零售商:Inspyer Lighting
2019/12/10 全球购物
手工制作的意大利皮革运动鞋:KOIO
2020/01/05 全球购物
机械电子工程专业推荐信范文
2013/11/20 职场文书
刑事起诉书范文
2015/05/19 职场文书
导游词之塘栖古镇
2019/12/04 职场文书
想创业成功,需要掌握这些要点
2019/12/06 职场文书
python树莓派通过队列实现进程交互的程序分析
2021/07/04 Python
用Python实现屏幕截图详解
2022/01/22 Python