一个基本的index.php - ZF Dream

一个基本的index.php

阿克 posted @ 2008年10月21日 06:44 in 自学笔记 with tags 前端控制器 , 1914 阅读

 html目录下的index.php是整个网站的调度员,所有对MVC项目的请求都将经过他的手,不过他也并非什么能人,只是个指路的而已,在医院里,这个工作叫导医,在火车站,这个工作是问讯处。每个请求通过URL的特定格式告诉index.php,我来要什么的,你该把什么告诉我。

这里只给出一个基本的index.php,如果你仔细阅读官方手册,你可以写出个功能很全面的来,但是就以下这个也能用:

<?php
// 设置时区
date_default_timezone_set('Asia/Shanghai');

/**
 * 设置默认包含目录,这非常重要,因为你需要把Framework的类库包含进来
 * 此外,M也是重要的包含内容,
 * 具体目录请按照你自己的目录结构设置,此处只是我的结构
 */

set_include_path('.' . PATH_SEPARATOR . '../../library' . PATH_SEPARATOR . './application/default/models/' . PATH_SEPARATOR . get_include_path());
// 把控制器的类库请到文件中来,没有这个,下面的指路工作无法完成
require_once 'Zend/Controller/Front.php';

/**
 * 开始指路
 */

$controller = Zend_Controller_Front::getInstance();
// 这里使用了多模块的方式,member是基于平行于default的一个模块
$controller->setControllerDirectory(array(

        'default' => '../application/default/controllers',

        'member'  => '../application/member/controllers'));
$controller->throwExceptions(false); // 如果是开发模式,建议这里写true,这样可以抛出错误供调试

// 执行!
$controller->dispatch();

在设置包含目录时,PATH_SEPARATOR后面的目录是相对于index.php这个文件来说的,这样解释也许更容易理解一些。同样,指路代码中setControllerDirectory那里的目录也是相对于index.php来说的。

官方手册里术语很多,Front.php被叫做“前端控制器”,getInstance()被叫做“获取实例”,dispatch()则是“分发器”……俺们那旮瘩看不懂这个,就写几个俗语了。别见笑。

(阿克原创,版权所有)


登录 *


loading captcha image...
(输入验证码)
or Ctrl+Enter
Host by is-Programmer.com | Power by Chito 1.3.3 beta | © 2007 LinuxGem | Design by Matthew "Agent Spork" McGee