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.MVC的模板标签系统(四)
Sep 05 PHP
在线竞拍系统的PHP实现框架(一)
Oct 09 PHP
php设计模式 Template (模板模式)
Jun 26 PHP
php中设置index.php文件为只读的方法
Feb 06 PHP
php中判断数组是一维,二维,还是多维的解决方法
May 04 PHP
解析:通过php socket并借助telnet实现简单的聊天程序
Jun 18 PHP
解析php 版获取重定向后的地址(代码)
Jun 26 PHP
PHP和javascript常用正则表达式及用法实例
Jul 01 PHP
PHP配置把错误日志以邮件方式发送方法(Windows系统)
Jun 23 PHP
分享一个漂亮的php验证码类
Sep 29 PHP
yii2学习教程之5种内置行为类详解
Aug 03 PHP
laravel框架查询数据集转为数组的两种方法
Oct 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
增加反向链接的101个方法 站长推荐
2007/01/31 PHP
PHP学习笔记 (1) 环境配置与代码调试
2011/06/19 PHP
php中使用Imagick实现图像直方图的实现代码
2011/08/30 PHP
php计算几分钟前、几小时前、几天前的几个函数、类分享
2014/04/09 PHP
PHP使用json_encode函数时不转义中文的解决方法
2014/11/12 PHP
Yii框架实现邮箱激活的方法【数字签名】
2016/10/18 PHP
js 加载并解析XML字符串的代码
2009/12/13 Javascript
js操作CheckBoxList实现全选/反选(在客服端完成)
2013/02/02 Javascript
javascript ready和load事件的区别示例介绍
2013/08/30 Javascript
jQuery 无限级菜单的简单实例
2014/02/21 Javascript
js实现跨域的几种方法汇总(图片ping、JSONP和CORS)
2015/10/25 Javascript
JS全局变量和局部变量最新解析
2016/06/24 Javascript
JS如何设置cookie有效期为当天24点并弹出欢迎登陆界面
2016/08/04 Javascript
微信小程序 首页制作简单实例
2017/04/07 Javascript
Nodejs进阶:express+session实现简易登录身份认证
2017/04/24 NodeJs
jQuery实现左右滑动的toggle方法
2018/03/03 jQuery
详解Vue结合后台的列表增删改案例
2018/08/21 Javascript
微信小程序用户授权弹窗 拒绝时引导用户重新授权实现
2019/07/29 Javascript
python中将阿拉伯数字转换成中文的实现代码
2011/05/19 Python
Python运算符重载详解及实例代码
2017/03/07 Python
Python之str操作方法(详解)
2017/06/19 Python
python实现简易通讯录修改版
2018/03/13 Python
Python打开文件,将list、numpy数组内容写入txt文件中的方法
2018/10/26 Python
pycharm运行和调试不显示结果的解决方法
2018/11/30 Python
python自带tkinter库实现棋盘覆盖图形界面
2019/07/17 Python
使用Python+Appuim 清理微信的方法
2021/01/26 Python
法国时尚品牌乐都特瑞士站:La Redoute瑞士
2016/09/05 全球购物
澳大利亚在线床零售商:Bedworks
2020/09/01 全球购物
大学生的网上创业计划书
2013/12/31 职场文书
司马光教学反思
2014/02/01 职场文书
有关环保的标语
2014/06/13 职场文书
学习雷锋标语
2014/06/25 职场文书
单位授权委托书范文
2014/08/02 职场文书
乡镇2014法制宣传日活动总结
2014/11/01 职场文书
《比的意义》教学反思
2016/02/18 职场文书
2019假期福利管理制度!
2019/07/15 职场文书