一个基本的index.php - ZF Dream
一个基本的index.php
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();
// 设置时区
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()则是“分发器”……俺们那旮瘩看不懂这个,就写几个俗语了。别见笑。
(阿克原创,版权所有)