zend framework项目分组(初级版)

Zend_Controller_Front 控制了Zend_Controller系统的整个工作流。它是前端控制器(FrontController)模型的解释。Zend_Controller_Front处理所有由服务器接收的请求并负责把请求派发给动作控制器

Zend_Controller_Request_Abstract (often referred to as the Request Object)描述请求环境和提供设置和读取控制器和动作名字以及任何请求参数的方法。另外它跟踪它所包含的动作是否被Zend_Controller_Dispatcher派遣。抽象请求对象的扩展可被用来封装整个请求环境,为了设置控制器和动作的名字,它允许路由器从请求环境中读出信息。 缺省地,Zend_Controller_Request_Http被用来访问整个HTTP请求环境。

Zend_Controller_Router_Interface用来定义路由器。路由是个过程,在这个过程中它通过检查请求环境来决定哪个个控制器和哪个控制器中的动作应该接受请求。控制器、动作和可选的参数就通过Zend_Controller_Dispatcher_Standard处理来设置在请求对象中。路由只发生一次:在最初收到请求并在第一个控制器被派遣之前。 缺省路由器,Zend_Controller_Router_Rewrite,从Zend_Controller_Request_Http取出URI的终点作为参数并基于在url中的路径信息分解成控制器、动作和参数。作为一个例子,URL http://localhost/foo/bar/key/value将被解析为foo控制器、bar 动作和带有一个值value的参数key。 Zend_Controller_Router_Rewrite也可以用来匹配任意的路径

Zend_Controller_Dispatcher_Interface被用来定义派遣器。派遣是个过程,在这个过程中它从请求对象中取出控制器和动作并映射它们到控制器文件/类和在控制器中的动作方法。如果控制器和动作不存在,它派遣缺省的控制器和动作。

实际的派遣过程包括初始化控制器类和在这个类中调用动作方法。不像路由,只发生一次,派遣是循环发生的。如果请求对象的派遣状态在任何点上重置,循环将被重复,调用不论哪个当前在请求对象中的动作。第一次循环随请求对象的派遣状态设置(布尔 true)完成,它将完成处理。 缺省的派遣器是Zend_Controller_Dispatcher_Standard。它定义控制器为以Controller结尾的 MixedCasedClasses,并且动作为以Action结尾的camelCasedMethods:FooController::barAction()。在这个例子中,控制器是foo,动作是bar

Zend_Controller的工作流相当简单。请求被Zend_Controller_Front接收,然后它调用Zend_Controller_Router_Rewrite来决定哪个控制器(和控制器中的动作)被派遣。为了在请求中设置控制器和动作名字Zend_Controller_Router_Rewrite分解URI。Zend_Controller_Front接着进入一个派遣循环。它调用Zend_Controller_Dispatcher_Standard,传递给它请求,派遣在请求(或使用缺省的)中指定的控制器和动作。在控制器完成之后,控制返回到Zend_Controller_Front。如果控制器通过重置请求派遣状态指示其它的控制器应该被派遣,循环将继续并且其它派遣被执行。否则,处理结束。

搞了半天,终于分组成功了 resources.frontcontroller.moduledirectory = APPLICATION_PATH “/modules” resources.frontcontroller.defaultModule = “default” resources.frontController.controllerDirectory = APPLICATION_PATH “/controllers”

然后默认的模块是default而文件夹布局是:

这样在admin控制器需要这样写:

class Admin_IndexController extends Zend_Controller_Action { public function indexAction() { echo ‘这里是admin模块下的index控制器下的index方法’; exit(); } }

这样访问:localhost就会默认访问default下的index控制器 而访问localhost/admin就会访问admin文件夹下控制器 PS:我以前看过tp的分组,还没有完全掌握zf的分组。今天先写这么多吧!

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏精讲JAVA

Spring MVC 到底是如何工作的?

这篇文章将深入探讨Spring框架的一部分——Spring Web MVC的强大功能及其内部工作原理。

913
来自专栏静默虚空的博客

Spring 面试问题 TOP 50

Spring 配置文件是 XML 文件。该文件主要包含类信息。它描述了这些类是如何配置以及相互引入的。但是,XML 配置文件冗长且更加干净。如果没有正确规划和编...

1132
来自专栏WindCoder

Spring基础小结

Spring是一个开源的轻量级Java SE(Java 标准版本)/Java EE(Java 企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。

551
来自专栏李家的小酒馆

Spring MVC面试整理

Spring MVC执行过程 1. 客户端的请求提交到dispatcherServlet 2. DispatcherServ...

2560
来自专栏JAVA高级架构

Spring 知识点提炼

1. Spring框架的作用 轻量:Spring是轻量级的,基本的版本大小为2MB 控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,...

3859
来自专栏SpringBoot 核心技术

第四十八章:SpringBoot2.0新特性 - RabbitMQ信任package设置本章目标SpringBoot 企业级核心技术学习专题构建项目总结

3484
来自专栏从零开始的linux

swap

Swap分区,即交换分区,系统在物理内存不够时,与Swap进行交换。 # free -m total used ...

4616
来自专栏阿杜的世界

Spring Boot:定制自己的starter

在学习Spring Boot的过程中,接触最多的就是starter。可以认为starter是一种服务——使得使用某个功能的开发者不需要关注各种依赖库的处理,不需...

1160
来自专栏木制robot技术杂谈

Python中os.path.dirname(__file__)的用法

os.path.dirname()的用途 os.path.dirname()用来获取文件的路径。 如: 1 2>>> os.path.dirname('/ho...

4057
来自专栏一个默默无闻的工程师的日常

OpenStack SR-IOV研究

8467

扫码关注云+社区

领取腾讯云代金券