Zend_Controller的工作原理
Zend_Controller是使用MVC模式来构建一个站点的基础。Zend_Controller体系是一个轻量的,模块化和可扩展的体系。它只提供最核心的必要的部分,允许开发者有很大的自由来灵活地构建自己的站点。使用Zend_Controller的站点,其代码结构会有一部份是相似的。
Zend_Controller 的工作流(workflow)是通过几个组件来实现的。虽然不需要完全理解这几个组件的含义,如果你对工作流程有点了解是很有帮助的:
- Zend_Controller_Front 前端控制器
- Zend_Controller_Router
- Zend_Controller_Dispatcher 分配器
- Zend_Controller_Action
Zend_Controller_Front(前端控制器)是Zend_Controller_Controller体系的组织者,它是FrontController设计模式的实现。 Zend_Controller_Front处理服务器接受的所有请求,并最后负责将请求分配给ActionController (Zend_Controller_Action)。Zend_Controller_Controller就是将客户的原始请求转发给相应的处理组件(Action)去完成具体的业务处理。
Zend_Controller_Router相当于一个路由器。路由是将一个URI分解并决定由哪一个Controller,和用什么Action来处理的过程。controller,action和可选的参数的定义,被封装成一个对象-- Zend_Controller_Dispather_Token,然后由Zend_Controller_Dispatcher来处理。路由只发生一 次:当请求被服务器接收到时,在分配到第一个控制器之前。Zend_Controller_Router负责解析客户的请求URI,分析其中的参数,以决定定位到哪个ActionController。Zend_Controller_Router会把分析出的参数封装成Zend_Controller_Dispather_Token对象。
所谓router,和我们熟知的网络路由器的功能是很相似的,具有判断网络地址和选择路径的功能,这里就是用来重定向。
"分配"的过程即根据Zend_Controller_Dispatcher_Token来查找适合的contoller文件,实例化其中的controller类(必须实现Zend_Controller_Action),并且最后在控制器内运行action。和路由不同,分配的过程不断重复的,Zend_Controller_Dispatcher被Zend_Controller_Front不断调用直到所有action都依次分配完毕。Zend_Controller_Dispatcher是根据Zend_Controller_Router对请求URI的解析结果(一个Zend_Controller_Dispather_Token对象)将请求转发给相应的Zend_Controller_Action。
Zend_Controller_Action是最基本的控制器。每个具体的控制器都是从Zend_Controller_Action类继承而来,是Zend_Controller_Action的子类,并且有自己的action方法。Zend_Controller_Action是基本的控制器,真正对一次用户请求进行具体处理的工作是由它来完成的。
Zend_Controller的工作流程相当简单。Zend_Controller_Front接收一个请求,然后由 Zend_Controller_Router来决定分配给哪个controller(实现Zend_Controller_Action的类)。Zend_Controller_Router把URI分解封装成 一个Zend_Controller_Dispatcher_Token 对象。Zend_Controller_Front接着进入一个分配循环,调用Zend_Controller_Dispatcher,把token对象 传给dispatcher来分配到具体的controller和action进行处理。在controller结束后,又把控制权交加给 Zend_Controller_Front。如果controller发现需要分配另一个controller(返回一个新的token对象),循环会一直继续直到另一次分配执行完毕。
Zend_Controller工作流示意图如下:
Route Process 路由过程
在你构建第一个控制器之前,你需要理解Zend_Controller_Router中的重定向过程是如何工作的。记住工作流程分为两步:一是重定向(routing),只发生一次;二是分配(dispatching),循环过程。
Zend_Controller_Front 调用Zend_Controller_Router来使一个URI 映射到一个controller(Zend_Controller_Action类)及其中的action上。 Zend_Controller_Router分解URI,生成一个对象Zend_Controller_Dispatcher_Token,然后再传递给分配器(Zend_Controller_Dispatcher)。
router使用很简单的方法来决定所要使用的controller及其action(URI映射到Zend_Controller_Action):
http://www.bkjia.com/controller/action/
上面controller就是我们要采用的控制器,action就是我们要采用的action。
其它可选择的GET参数可以在URI中定义,并传递给controller。格式为key/value:http://framework.zend.com/controller/action/key1/value1/
如果/controller/这部分没有写明,默认调用index。 如果/action/这部份没有写,也默认调用index。如:
http://framework.zend.com/roadmap/future/ Controller: roadmap Action : future http://framework.zend.com/roadmap/ Controller: roadmap Action : index http://framework.zend.com/ Controller: index Action : index
controller,action的名称及其它参数将会被封装到一个token对象中-- Zend_Controller_Dispatcher_Token。这个对象被传回到Zend_Controller_Front,然后进入分配过程, 被传递给Zend_Controller_Dispatcher。
Token对象
Token对象是个很简单的对象,在Zend_Controller_Front和实现router,dispatcher接口的类间传递。它把controller,action和其它GET参数封装在一起。
- controller的名称通过getControllerName()及setControllerName()来获得和设置
- action的名称过getActionName()和setActionName()来获得和设置。
- 传递给action的参数是个数组(key/value形式),可以通过getParams()来获得,通过setParams()来设置。
Dispatch Process 分配过程
所谓分配过程,就是根据token对象(Zend_Controller_Dispatcher_Token) ,抽取其中的信息:controller的名称,action的名称,参数等等,然后实例化一个controller,并调用其中的action来进行处理。

핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전
중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

드림위버 CS6
시각적 웹 개발 도구

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

뜨거운 주제











PHP와 함께 ZendFramework 사용: 빠른 시작 가이드 ZendFramework는 강력하고 쉽게 확장 가능한 오픈 소스 PHP 기반 웹 애플리케이션 프레임워크입니다. ZendFramework에는 효율적인 웹 애플리케이션을 구축하는 데 도움이 되는 유용한 구성 요소가 많이 포함되어 있습니다. 이 기사에서는 PHP에서 ZendFramework를 사용하여 빠르게 시작하는 방법을 소개합니다. ZendFramewo 설치

ZendFramework 미들웨어를 통한 효율적인 데이터베이스 쿼리 구현 소개 개발 과정에서 데이터베이스 쿼리는 피할 수 없는 부분입니다. 효율적인 데이터베이스 쿼리는 시스템 성능과 사용자 경험을 크게 향상시킬 수 있습니다. ZendFramework는 강력한 데이터베이스 작업 기능을 갖춘 널리 사용되는 PHP 프레임워크입니다. 이 기사에서는 ZendFramework 미들웨어를 통해 효율적인 데이터베이스 쿼리를 구현하는 방법을 소개하고 해당 코드 예제를 제공합니다. 1. ZendF 이해

ZendFramework 미들웨어: 애플리케이션에 OAuth 및 OpenID 로그인 지원 추가 사용자 인증은 오늘날의 인터넷 애플리케이션에서 중요한 기능입니다. 더 나은 사용자 경험과 보안을 제공하기 위해 많은 애플리케이션은 OAuth 및 OpenID와 같은 타사 로그인 서비스를 통합하기로 선택합니다. ZendFramework에서는 미들웨어를 통해 애플리케이션에 OAuth 및 OpenID 로그인 지원을 쉽게 추가할 수 있습니다. 먼저 Ze를 설치해야 합니다.

ZendFramework는 개발자가 확장 가능한 고성능 PHP 애플리케이션을 신속하게 구축하는 데 도움이 되는 강력한 개발 프레임워크입니다. 그 중 미들웨어는 ZendFramework의 중요한 개념으로, 전체 텍스트 검색 및 페이징 기능을 구현하는 데 도움을 줄 수 있습니다. 이 기사에서는 ZendFramework에서 미들웨어를 사용하여 이 두 가지 기능을 구현하는 방법을 소개하고 코드 예제를 제공합니다. 1. 전체 텍스트 검색 기능 전체 텍스트 검색은 최신 응용 프로그램의 일반적인 기능 중 하나입니다.

ZendFramework는 확장 가능한 웹 애플리케이션을 구축하기 위한 많은 강력한 도구와 구성 요소를 제공하는 PHP 기반의 오픈 소스 프레임워크입니다. 이 기사에서는 ZendFramework의 미들웨어를 사용하여 웹 애플리케이션에 소셜 로그인 기능을 추가하는 방법을 소개합니다. 미들웨어는 요청이 애플리케이션에 들어오기 전이나 후에 실행되는 코드입니다. 이를 통해 개발자는 요청 처리 프로세스를 사용자 정의하고 확장할 수 있습니다. ZendFramework는 유연한 방법을 제공합니다.

ZendFramework 미들웨어: 애플리케이션에 Alipay 및 WeChat 결제 기능 추가 소개: 모바일 결제의 인기로 인해 Alipay 및 WeChat 결제는 많은 애플리케이션에서 필수적인 결제 방법이 되었습니다. 이 기사에서는 ZendFramework 미들웨어를 사용하여 Alipay 및 WeChat 결제 기능을 애플리케이션에 추가하는 방법을 소개합니다. 이 기사를 공부하면 미들웨어를 사용하여 결제 프로세스를 단순화하고 실제 프로젝트에 적용하는 방법을 배울 수 있습니다. 1. 준비 시작하기 전에,

ZendFramework2는 PHP 개발자가 고품질 웹 애플리케이션을 보다 편리하게 구축할 수 있도록 다양한 기능과 모듈을 제공하는 인기 있는 PHP 프로그래밍 프레임워크입니다. 이 기사에서는 이 프레임워크를 더 잘 사용하는 데 도움이 되는 몇 가지 일반적인 ZendFramework2 작업을 소개합니다. MVC 패턴 ZendFramework2에서는 MVC(Model-View-Controller) 패턴이 가장 일반적인 아키텍처입니다. MVC 패턴은

ERP 시스템을 개발하기로 결정했다면 적합한 프레임워크를 선택하는 것이 중요합니다. 여기서는 ERP 시스템 개발에 더 적합한 프레임워크를 찾는 데 도움이 되도록 두 가지 PHP 프레임워크인 CodeIgniter와 ZendFramework를 비교해 보겠습니다. CodeIgniter와 ZendFramework는 널리 사용되는 PHP 프레임워크입니다. 둘 다 많은 기능을 제공하며 확장 및 유지 관리가 가능합니다. 그러나 이 두 프레임워크는 일부 측면에서 크게 다르며 일부 애플리케이션에 더 적합합니다.
