首页 > 代码库 > zend framework2 之入口文件详解以及原理解析

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

zend framework2 之入口文件详解

转载请注明出处,尊重原创:http://blog.csdn.net/a437629292/article/details/41545297,谢谢!

一、基本配置解析

1. 详细配置:

         如下代码:

        

<?php

// 定义程序目录
defined('APPLICATION_PATH')
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));

// Define application environment
defined('APPLICATION_ENV')
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'development'));
//加载配置文件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 的一些插件使用,敬请期待!谢谢!

           国际惯例,欢迎拍砖!

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