zend framework2 之入口文件详解以及原理解析

2015-01-27 06:04:51 · 作者: · 浏览: 10

?

一、基本配置解析

1. 详细配置:

如下代码:

?


  
//加载配置文件config.ini $iniArr = parse_ini_file(APPLICATION_PATH.'/configs/application.ini',true); // 配置环境目录 set_include_path(implode(PATH_SEPARATOR, array( realpath(APPLICATION_PATH . '/../library'), realpath(APPLICATION_PATH . '/library'), realpath(APPLICATION_PATH . '/../../../library'), realpath(APPLICATION_PATH . '/modules'), realpath(APPLICATION_PATH . '/modules/default/controllers'), realpath(APPLICATION_PATH . '/modules/default/models'), realpath(APPLICATION_PATH . '/modules/userAndGroup/controllers'), realpath(APPLICATION_PATH . '/modules/userAndGroup/models'), get_include_path(), )));
//定义默认时区
date_default_timezone_set('Asia/Shanghai'); 
require_once 'Zend/Loader/Autoloader.php';//载入zend框架
Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);//静态载入自动类文件
/** Zend_Application */
require_once 'Zend/Application.php';
//开启session
Zend_Session::start();
// Create application, bootstrap, and run
$application = new Zend_Application(
    APPLICATION_ENV,
    APPLICATION_PATH . '/configs/application.ini'
);
$application->bootstrap()
            ->run();

?

2. 特说说明:

A. equire_once 'Zend/Loader/Autoloader.php';//载入zend框架

这里载入zend框架作用非常大,就不用在后面的文件里需要引用zend框类的时候不停的require_once了。

B.Zend_Session::start(); //如果你要使用session,必须在 ndex.php入口文件中开启,其实这句话也不是这么说,一般是:在使用 ession之前开启,但是个人一般习惯性在入口文件中开启。

C. set_include_path配置环境目录,配置自己目录,然后该目录下的文 都被引入了,就不用在用到时到处require_once了。注:不过经过我测试,

二、请求走向

1. 默认请求:

何为默认请求,假如域名配置为:www.mark.com为你项目的域名,即: www.mark.com即访问到你站点下的zendframework项目的public目录。

结果会是怎样?

通过尝试,结果为:浏览器显示的是我项目下的

default/views/script//index/index.phtml

到此有些同学就会问了:为什么是去default下的这个index.phtml,而不是其

他的,我可啥参数都没有给,啥路径都没有设定啊?

其实zend框架已经设定了一个机制,其实你访问www.mark.com就等于访问

www.mark.com/default/index/index这是zend框架已经设定的机制,你可以在浏览 浏览器上测试者两个连接是不是等效。

下面让我们来一张图看清楚请求原理分析:

\

2. 其他请求:

假如我有另外模块,如:

\

?

其他模块的controller可就跟default下的controller有所不同了,看看我的userAndGroup里的controller代码:

?

虽然文件名是IndexController,但是文件里的class的命名就有zend框架自己的规定了,不遵守规矩的话,那就访问不到了(不过也是可以配置的,在不加其他配置的情况下,就得遵守这个命名规则了)。命名规则是:模块名_控制器名,例如我userAndGroup的IndexController的class名字就得是:userAndGroup_IndexController 了。

最后,我们要怎么访问呢?

实践检验理论,理论指导实践!

在浏览器访问:www.mark.com/userAndGroup ,则也相当于访问:www.mark.com/userAndGroup/index/index。原理跟上面一样,也是zend框架默认找userAndGroup下的IndexController下的indexAction。

最后注意:

Action的命名不能使用大写。相应模块下的views下创建相应的文件夹,并对应建立.pthml文件夹,比如:

userAndGroup 模块下的IndexController 里的indexAction默认对应userAndGroup目录下的views/scripts/index/index.phtml

本期学习,到此为止,下期将分享zend 的一些插件使用,敬请期待!谢谢!

国际惯例,欢迎拍砖!