The DoYouHaoBaby PHP Framework中文开发文档手册
Copyright(c) DoYouHaoBaby.NET All Rights Reserved.
[ MVC 模式的启动 ]

在 DoYouHaoBaby 应用中,启动 MVC 模式需要经过一系列的操作,了解这个过程可以帮助我们更好的使用 DoYouHaoBaby。

DoYouHaoBaby 启动 MVC 模式的主要步骤:

如图:



下面根据上图依次说明各个步骤载入的文件,以及文件的用途和主要功能。

入口文件

首先,所有的请求都会发送到一个特殊的 PHP 脚本文件。这个文件被称为“入口”。新建好的应用程序在 D:\phpcondition\htdocs\doyouhaobaby\WeDoIt 目录中有一个名为 index.php 的文件,这个文件就是“入口”。

“入口”的代码很少:
  1. <?php   
  2. /**  
  3.  * The DoYouHaoBaby PHP FrameWork - WeDoIt  
  4.  *  
  5.  * @author     DoYouHaoBaby Support Team  
  6.  * @copyright  Copyright (c) 2010 - 2011 http://doyouhaobaby.com All rights reserved    
  7.  * @license    Licensed ( http://www.apache.org/licenses/LICENSE-2.0 )  
  8.  */  
  9.   
  10.   
  11. /**   
  12.  * 当前项目配置 < 用于配置系统运行环境 >  
  13.  *  
  14.  * <!-- 虚拟主机方式部署 -->  
  15.  *  
  16.  * < 如果采用虚拟主机方式来部署,即入口文件位于项目目录的根目录   
  17.  *   这种情况可以不设置APP_NAME 和APP_PATH >  
  18.  *  
  19.  * <!-- 独立服务器部署方式 -->   
  20.  *  
  21.  * < 如果是独立服务器部署方式,因为入口文件和项目不一致。  
  22.  *   这个时候,我们需要指定项目目录,以便我们利用项目中资源。  
  23.  *   同时,这个时候我们也需要指定项目目录,因为如果我们指定项目名字,  
  24.  *   那么项目就由入口文件上层目录代替,显然,这是错误的。 >  
  25.  *  
  26.  * <!-- 注意事项 -->  
  27.  *  
  28.  * < 项目名字只能有字母、数字、下划线组成 >  
  29.  * < 项目路径只能使用物理路径,因为系统很多底层数据处理,因为目录深度的原因,  
  30.  *   如果不使用物理路径,将会造成系统找不到路径。  
  31.  *   所以系统中不允许出现 ‘./test’,‘../hello/test’之类的相对路径 。  
  32.  *   另外,项目路径不云溪后面添加'/','\',这是系统一个习惯用法。  
  33.  *   所有常量定义的路径,后面都没有在添加一个斜杠后者反斜杠 >  
  34.  */  
  35. //define('APP_NAME','WeDoIt'); //项目名字   
  36. //define('APP_PATH',dirname(__FILE__));  //项目路径   
  37.   
  38. /** 加载框架 */  
  39. require_once '../DoYouHaoBaby/DoYouHaoBaby.php';   
  40.   
  41. /** 实例化框架并且初始化 */  
  42. App::RUN();  

这个文件要做的事情就和代码中的注释一样,非常简单。相关说明,你也看代码中的注释。


概念描述

入口文件的 index.php 是一个非常重要的文件。

这个文件包含包含两个重要的概念:

APP_NAME
标识应用程序的唯一 ID。每一个 DoYouHaoBaby 应用程序都应该具有唯一的 ID。这个 ID 会被用于各种用途,包括生成缓存 ID、SESSION ID,以及 WebSetup 对应用程序的管理。DoYouHaoBaby 只能使用字母和数字,并且区分大小写。除非,入口文件在项目目录根根目录中,否则必须指定该值。

APP_PATH
DoYouHaoBaby 项目所在的目录,这个不能搞错,否则入口文件无法加载项目中的数据。除非,入口文件在项目目录根根目录中,否则必须指定该值。


总控制器APP

在前面的 index.php 入口文件中,通过 App::RUN( ) 这样的调用开始请求一个应用程序,这是一个总控制器。

总控制器封装了整个应用程序需要的一些公共服务,例如检查当前访问用户的身份、检查访问权限等等。

主要功能:

初始化应用程序运行环境

  1. 载入配置文件
  2. 设置异常处理函数
  3. 根据设置启动 session
  4. 解析请求,决定要调用的控制器
  5. 应用程序对象提供的基础服务:


取得当前访问用户的信息(需要启动 session)

  1. 将指定的用户信息保存到 session
  2. 从 session 清除用户信息
  3. 获得应用程序的设置
  4. 处理控制器或动作无法找到的异常情况
  5. 处理用户没有权限访问控制器的异常情况


说明:虽然应用程序对象的功能几乎每一个应用都需要,但是许多应用在具体要求上都有区别。我们可以通过系统提供的函数G::C(  )来控制这些数据。这种做法既避免了框架变得复杂,又降低了开发者的定制难度。

这个方法内容按照如下的流程真正启动 MVC 模式:



当控制器被调用时,MVC 模式就完成了启动工作,接下来就是控制器和视图的交互,以及将操作结果返回给浏览器。