这几天学习Zend Framkwork,初步接触了下Zend Framkwork最为人们所称道的Controller,这里分享一下一些使用小心得.
(图来源自互联网)
其实ZF的MVC框架有点复杂,它将日常网站响应中Controller的工作细化成了好几个部分了。
先是bootstrap,这是网站的入口,对于MVC框架来说,单一入口几乎是必备的元素,而且单一入口对于统一网站程序运行环境也是意义重大的!在这里我们可以将ZF的各种功能强大的类预先载入.
下面是我的index.php的内容
set_include_path('../library'); //先设置好Zend Framework的库类的路径,这是必须的 require_once 'Zend/Loader.php'; //载入Zend Loader,方便之后载入各种ZF的资源 Zend_Loader::loadClass('Zend_Controller_Front'); Zend_Loader::loadClass('Zend_Config_Ini'); Zend_Loader::loadClass('Zend_Controller_Router_Rewrite');
这里我们载入了几个ZF的类
第一个是Zend_Controller_Front,我个人将这个理解为整个ZF响应请求的控制器,它的作用是用来接收各种HTTP请求并根据设定做出进一步的处理。在这里我们可以自由设置使用哪个URL路由器(router),使用哪个分派器(dispatcher)进行工作。
第二个是Zend_Config_Ini,这个类是为了方面我们将储存在Ini文件上的网站配置信息读取进程序里,以供使用的。这里我将网站的路由信息和其他的一些配置存放在这里。
第三个是Zend_Controller_Router_Rewrite,我个人理解这个类是用于响应各种url_rewrite,并根据路由表将路由结果返回给前端控制器以供分派.
接下来就是实例化上面载入的各种资源并且使用它们
//路由部分 $router_setting=new Zend_Config_Ini('../application/configs/config.ini', 'router'); $web_router=new Zend_Controller_Router_Rewrite(); $web_router->addConfig($router_setting,'routes');
首先我使用Zend_Config_Ini读取了配置文件config.ini中的路由表,然后实例化一个路由器,并且将路由表添加进去。
$web_entrance=Zend_Controller_Front::getInstance(); $web_entrance->setControllerDirectory('../application/controllers') ->setRouter($web_router) ->dispatch();
由于Zend_Controller_Front是一个使用单件模式工作的,所以一般来说不需要实例化,只需要像下面这样就可以使用了
Zend_Controller_Front::run('这里填入储存具体控制器的路径')
但是由于我再前面设置了具体的路由器,因此我需要手动实例化一个前端控制器,而前端控制器的实例化则是使用静态方法的获取一个Zend_Controller_Front对象的.当获取了一个前端控制器的变量后,我们需要设置具体控制器的路径,这里我使用的是setControllerDirectory()这个方法。然后将上面设置好的路由器用setRouter()方法载入到前端控制器中。最后就是用dispatch()方法将任务分派出去,这个网站的入口工作就算是完成了.