ThinkPHP采用模块和操作的方式来执行,首先,用户的请求会通过入口文件生成一个应用实例,应用控制器(我们称之为核心控制器)会管理整个用户执行的过程,并负责模块的调度和操作的执行,并且在最后销毁该应用实例。任何一个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

折叠PHP Code复制内容到剪贴板

  1. class UserAction extends Action{
  2. }

如果我们要执行下面的URL

http://servername/index.php/User/add

你需要增加一个add方法就可以了,例如

折叠PHP Code复制内容到剪贴板

  1. class UserAction extends Action{
  2. // 定义一个add操作方法,注意操作方法不需要任何参数
  3. Public function add(){
  4. // add操作方法的逻辑实现
  5. // ……  bath rug
  6. $this->display(); // 输出模板页面
  7. }
  8. }

操作方法必须定义为Public类型,否则会报错。并注意操作方法的命名不要和内置的Action类的方法重复。系统会自动定位当前操作的模板文件,而默认的模板文件应该位于项目目录下面的Tpl\default\User\add.html。

转载于:https://www.cnblogs.com/imadin/archive/2011/04/16/2018291.html

ThinkPHP采用模块和操作相关推荐

  1. php 5.2 模块路径,5.2 模块和操作

    # 模块和操作 [上一页](# "上一页")[下一页](# "下一页") ThinkPHP采用模块和操作的方式来执行,首先,用户的请求会通过入口文件生成一个应用 ...

  2. BK05-蓝鲸智云-标准部署-关键模块逐步操作

    新手建议按照详细步骤,关键模块逐步操作. 一是在部署失败时,容易定位原因: 二是可以熟悉架构. 安装 PaaS 平台 ./bk_install paas 详细步骤 PaaS 平台是蓝鲸产品的门户入口, ...

  3. php循环volist,ThinkPHP采用volist实现三级循环代码实例

    本文以实例描述了ThinkPHP采用标签实现三级循环代码,具体操作步骤如下: 1. 三级循环需要三维数组,实现代码如下: function MakeTree($pid,$level) { $map[' ...

  4. thinkphp youdian cms 实际操作 增加专题页面 以及行为扩展解释

    thinkphp3的访问模式是 http://域名/项目名/分组名/模块名/操作名/其他参数 1我们的模块位于home 我们的action是专题页面 根据thinkphp3.0  5.3定义actio ...

  5. Python模块MySQLdb操作mysql出现2019错误:Can't initialize character set utf-8

    我使用python的MySQLdb模块实现了一个mysql client, 在测试时,出现了如下错误 Python模块MySQLdb操作mysql出现2019错误:Can't initialize c ...

  6. Python之re模块 —— 正则表达式操作

    Python之re模块 -- 正则表达式操作 转自:http://www.cnblogs.com/PythonHome/archive/2011/11/19/2255459.html 这个模块提供了与 ...

  7. boost::mpi模块sendrecv() 操作的测试

    boost::mpi模块sendrecv操作的测试 实现功能 C++实现代码 实现功能 boost::mpi模块sendrecv() 操作的测试 C++实现代码 #include <boost/ ...

  8. Python os模块文件操作(二)

    Python os模块文件操作(二) os模块对文件夹和文件的操作很多.可以先看: https://blog.csdn.net/weixin_43790276/article/details/9867 ...

  9. Python os模块文件操作(一)

    Python os模块文件操作(一) 一.文件描述符 在使用代码对文件进行操作时,为了指定操作的文件,避免不了要使用文件描述符,所以我们先介绍什么是文件描述符. 操作系统为了高效管理已经被打开的文件, ...

最新文章

  1. 基于关键帧的RGB-D视觉惯性里程计
  2. 【转】小菜硬件杂谈 细数主板上曾出现过的插槽
  3. 房价预测 search Search 中对数据预处理的学习
  4. 护航Lazada双11购物节 阿里云CDN全球化火力全开
  5. VS2010中的sln,suo分别是什么文件
  6. 热榜第一!GitHub 标星 5.6w,用 Python 实现所有算法!
  7. Matlab图形修饰之色彩处理
  8. WPF之DatePicker使其只能选择日期,不能输入日期
  9. java输入语句buffer_Java输入流之BufferReader和Scanner的用法!
  10. Linux 操作系统 之 虚拟内存
  11. 《Evolutionary Computation for Expensive Optimization:A Survey》笔记
  12. mysql的msi文件下载
  13. 史上最全常见前端大厂面试知识点汇总【已过字节, 腾讯teg,华为,网易】
  14. adguard home上网慢_分享一下AdGuard HOME的使用情况和几条规则。
  15. 手写一个C语言编译器
  16. QScintilla的信号汇总和解释
  17. 逆水寒捏脸服务器维护,《逆水寒》2019年3月28日更新公告
  18. vue实现 地图只显示几个省份
  19. 四、计算机网络之网络层
  20. 步进电机整步、半步、细分波形理解

热门文章

  1. 东方和西方的两个视角的摘抄
  2. 使用Apple的感受
  3. 【转】C# 调用 C++ 数据转换
  4. 【摘录】UNITY优化-有关骨骼数量的上限问题
  5. 新西兰激光事故5年增加130% 官员警告危害航空安全
  6. 文件内容、关键字匹配,split 和 indexOf 均可实现
  7. Python学习入门基础教程(learning Python)--3.2 if-else分支语句
  8. 二叉树的操作(二叉树的创建、先序遍历---先根、中序遍历----先左、后续遍历---后根)
  9. hdu-1576(A/B)
  10. NYOJ 610 定长覆盖