Chinaunix首页 | 论坛 | 博客
  • 博客访问: 95636
  • 博文数量: 109
  • 博客积分: 3411
  • 博客等级: 中校
  • 技术积分: 1155
  • 用 户 组: 普通用户
  • 注册时间: 2011-04-01 09:04
文章分类

全部博文(109)

文章存档

2011年(109)

分类: 系统运维

2011-04-14 11:06:24

采用模块和操作的方式来执行,首先,用户的请求会通过入口文件生成一个实例,应用控制器(我们称之为核心控制器)会管理整个用户执行的过程,并负责模块的调度和操作的执行,并且在最后销毁该应用实例。任何一个行为都可以认为是一个模块的某个操作,系统会根据当前的URL来分析要执行的模块和操作。这个分析工作由URL调度器来实现,官方内置了Dispatcher类来完成该调度。 在Dispatcher调度器中,会根据

来获取当前需要执行的appName)、 模块(moduleName)和操作(actionName),在某些情况下,appName可以不需要(通常是网站的首页,因为项目名称可以在入口文件 中指定,这种情况下,appName就会被入口文件替代)。在复杂一点的情况下面,可能还会出现分组(groupName)。

        每个模块是一个Action文件,类似于我们平常所说的控制器,系统会自动寻找项目类库Action目录下面的相关类,如果没有找到,则会定位到空模块,否则抛出异常。

        actionName操作是首先判断是否存在Action类的公共方法,如果不存在则会继续寻找父类中的方法,如果依然不存在,就会寻找是否存在自动匹配的模版文件。如果存在模版文件,那么就直接渲染模版输出。

        因此应用中的一个重要过程就是给不同的模块定义具体的操作。一个应用如果不需要和交互的时候可以不需要定义模型类,但是必须定义Action控制器。 Action控制器的定义非常简单,只要继承Action基础类就可以了,例如:

折叠 Code复制内容到剪贴板

  1. class UserAction extends Action{   
  2.   
  3. }  

如果我们要执行下面的URL

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

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

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

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

 

阅读(353) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:未来社交型的CRM

给主人留下些什么吧!~~