首页 > 代码库 > 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 之入口文件详解以及原理解析