• Zend_Controller_Front 研究


      如果你裸写php,一个项目就会出现很多的页面控制器(Page Controller),如果项目很大,重复代码就很多,越来越变得很难维护。有了问题,自然就有解决方案!于是前端设计模式  闪亮登场!

      前端控制器建议集中处理所有请求的处理,前端控制器通过让单个控制器负责传输所有请求,从而解决了在 Page Controller 中存在的分散化问题。控制器本身通常分为以下两部分实现:处理程序和命令层次结构

    一个前端控制器其本体包括两部分:一个分发中心(或叫调度处理程序)和一个command(或动作)层次结构。当一个请求到达服务器,前端控制器接收此请求,从其请求信息中获取足够的内容并决定下一步操作,然后委托给某个command,执行操作。

      看了Zend_Controller_Front 源码  实现了» 模型-视图-控制器 (MVC)应用程序的» 前端控制器模式。目的在于初始化请求环境,并路由到来的请求,接着分发任何发现的动作;收集所有的响应,在整个过程完成时就其返回。 同是也实现了 单件(Singleton)模式,意味着任何时候,都只可能有一个有效实例。这使得它可以作为注册表,供分发过程中的其他对象引用。

      下面是简单Zend_Controller_Front 简单类图

      

      Zend_Controller_Front 把request 对象和response 对象 传到 dispatcher 对象,dispatcher 对象通过 request 找到相应的controller 和 action, 渲染试图!执行方法。还有管理plugin 和路由。

      java 的 Strut1和Struts2里面的做法算是比较经典的两种前端控制器。Struts框架以XML配置方式体现,在strut.xml配置动作,在web.xml中配置过滤器。当然我并没有研究过ssh的理念,所以不在这里啰嗦了。感觉php好杂!没有自己的核心理念。以前的理念是面向过程,后来又加入面向对象东西!个人感觉php只是一个tool 而不是language。想深了玩,可以去研究c、c++、服务器。想向广了玩可以玩玩java,那才是面向对象的正统。纯属屌丝coder个人见解,不要人身攻击噢!

    --EOF--

  • 相关阅读:
    基于 mysql 异步驱动的非阻塞 Mybatis【待验证】
    Hive SQL优化方式及使用技巧
    使用Guava-RateLimiter限流控制qps
    hive 时间戳函数之unix_timestamp,from_unixtime
    Hive实现自增列的两种方法
    shell 下 urlencode/urldecode 编码/解码的方法
    awk使用shell变量,shell获取awk中的变量值
    shell脚本删除远程过期文件
    linux下多进程同时操作文件
    hive学习----Hive表的创建
  • 原文地址:https://www.cnblogs.com/liuzhang/p/3163967.html
Copyright © 2020-2023  润新知