ThinkPHP采用模块和操作分析

2015-01-24信息快讯网

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
 
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。
PhpMyAdmin出现export.php Missing parameter: what /export_type错误解决方法
通过5个php实例细致说明传值与传引用的区别
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
php中++i 与 i++ 的区别
php中判断文件空目录是否有读写权限的函数代码
全新的PDO数据库操作类php版(仅适用Mysql)
php 操作数组(合并,拆分,追加,查找,删除等)
ThinkPHP 连接Oracle数据库的详细教程[全]
php 操作调试的方法
php中配置文件操作 如config.php文件的读取修改等操作
php中CI操作多个数据库的代码
PHP图片处理类 phpThumb参数用法介绍
PHPThumb PHP 图片缩略图库
ThinkPHP写第一个模块应用
Uncaught exception com_exception with message Failed to create COM object
php中mysql模块部分功能的简单封装
PHP学习笔记 用户注册模块用户类以及验证码类
php中修改浏览器的User-Agent来伪装你的浏览器和操作系统
不重新编译PHP为php增加openssl模块的方法
PHP模块 Memcached功能多于Memcache
Drupal 添加模块出现莫名其妙的错误的解决方法(往往出现在模块较多时)
PHP学习之数组值的操作
PHP学习之数组的定义和填充
PHP学习之正则表达式
PHP学习之字符串比较和查找
PHP学习之整理字符串
The specified CGI application misbehaved by not returning a complete set of HTTP headers
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
一个基于PDO的数据库操作类
php SQL Injection with MySQL
zend framework多模块多布局配置
PHP开发中常用的字符串操作函数
php 数组的指针操作实现代码
PHP操作数组相关函数
php图片处理:加水印、缩略图的实现(自定义函数:watermark、thumbnail)
ThinkPHP中实例Model方法的区别说明
©2014-2024 dbsqp.com