文档章节

HMVC in Kohana:请求工厂模式

hming
 hming
发布于 2014/08/29 16:12
字数 699
阅读 132
收藏 0

一个最佳的分层结构:

  • 降低项目之间的依赖性

  • 鼓励重用代码,组件和模块

  • 增加可扩展性,减轻可维护性

在客户端使用HMVC分层结构的用途

  • 模块化界面元素或部件

  • 应用和菜单控制

  • 服务器交互

  • 可重复使用的应用流

HMVC基础
一个很容易理解HMVC的方法是就像AJAX没有额外的服务器调用。例如,你用AJAX的动作显示一个用户列表。你可以在其他控制器重用那个动作,而不是重复方法。
Request Factory
可以通过Kohana的Request::factory()的方法实现HMVC。使用Request factory你可以在认识时间请求过程中随意充分执行一个Kohana request。
Request::factory()方法接受RouteURI作为参数,并可以结合Kohana强大的路由功能你创建的任意应用程序。
在控制器中使用Request Factory
下面的例子为你展示如何在其他控制器使内部使用Request Factory。
虽然不能全部突出HMVC的强大功能,它可以为你展示如何将分开的两个请求布局到一个层。

class Controller_Static extends Controller{
/**
 * The following action loads page.
 * A sub request is called to load a dynamic menu
 */
    public function action_page(){
        $page_name = Request::instance()->param('page'); 
        $this->request->response = View::factory('page/'.$page_name)->bind('menu', $menu); 
        $menu = Request::factory('static/menu')->execute()response;
    } 
    public function action_menu(){
        $page_name = Request::instance()->param('page'); 
        $this->request->response = View::factory('page/menu')->bind('links', $links); 
        $links = Kohana::config('menu')->$page_name;
    }
}

在一个视图中使用Request Factory
另一个使用Request Factory的有效方式是从一个视图中调用请求。在下面的例子里我们通过从视图中调用动态菜单和动态页脚代替控制器。

<h1>< ?php echo $page_title ?></h1>   < ?php echo Request::factory('page/menu')->execute()->response ?>   <div id="container">
    < ?php echo $content ?>
  </div>   < ?php echo Request::factory('page/menu')->execute()->response ?>

使用Request Factory以Kohana为基础整合其他开源项目
如果你分析Kohana 的bootstrap.php文件,你会注意到没有神奇发生直到一个Request类被创建Request::instance()方法被调用。
Request::instance()和Request::factory的唯一不同点是instance()方法创建仅仅是创建一个单独的指导主请求和输出必要的响应头文件的Request类。
一个很重要的事情必须指出,但也不绝对创建一个单独的Request实例或者输出任何headers.一个Kohana的请求在Kohana初始化时被全 部执行需要使用Request::factory()。使用Kohana-for-Wordpres插件kohana如何被整合到Wordpress


© 著作权归作者所有

hming
粉丝 3
博文 88
码字总数 86648
作品 0
深圳
程序员
私信 提问
JavaScript 的一些设计模式

设计模式的定义:在面向对象软件设计过程中针对特定问题的简洁而优雅的解决方案 设计模式是前人解决某个特定场景下对而总结出来的一些解决方案。可能刚开始接触编程还没有什么经验的时候,会...

格西南
08/20
0
0
JavaScript 中常见设计模式-代理模式

     代理模式   情景:小明追女生 A   非代理模式:小明 =花=> 女生A   代理模式:小明 =花=> 让女生A的好友B帮忙 =花=> 女生A   代理模式的特点   代理对象和本体对象具有一...

webstack前端栈
2018/06/15
0
0
Javascript策略模式理解以及应用

最近一直在看Javascript设计模式,想通过写文章来增加自己对策略模式的理解,同时记录自己学习的经历。希望大家看完之后觉得有收获可以帮忙点个赞表示支持。 策略模式的定义 策略模式的定义是...

arzh
2018/12/18
0
0
在JavaScript中理解策略模式

设计模式是: 在面向对象软件过程中针对特定问题的简洁而优雅的解决方案. 通过对封装、继承、多态、组合等技术的反复利用, 提炼出可重复使用面向对象的设计技巧. JavaScript 可以模拟实现传统...

夜曉宸
01/27
0
0
23种设计模式(10):命令模式

定义:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。 类型:行为类模式 类图: 命令模式的结构 顾名思义,...

LCZ777
2014/07/07
66
0

没有更多内容

加载失败,请刷新页面

加载更多

nginx学习笔记

中间件位于客户机/ 服务器的操作系统之上,管理计算机资源和网络通讯。 是连接两个独立应用程序或独立系统的软件。 web请求通过中间件可以直接调用操作系统,也可以经过中间件把请求分发到多...

码农实战
今天
5
0
Spring Security 实战干货:玩转自定义登录

1. 前言 前面的关于 Spring Security 相关的文章只是一个预热。为了接下来更好的实战,如果你错过了请从 Spring Security 实战系列 开始。安全访问的第一步就是认证(Authentication),认证...

码农小胖哥
今天
10
0
JAVA 实现雪花算法生成唯一订单号工具类

import lombok.SneakyThrows;import lombok.extern.slf4j.Slf4j;import java.util.Calendar;/** * Default distributed primary key generator. * * <p> * Use snowflake......

huangkejie
昨天
12
0
PhotoShop 色调:RGB/CMYK 颜色模式

一·、 RGB : 三原色:红绿蓝 1.通道:通道中的红绿蓝通道分别对应的是红绿蓝三种原色(RGB)的显示范围 1.差值模式能模拟三种原色叠加之后的效果 2.添加-颜色曲线:调整图像RGB颜色----R色增强...

东方墨天
昨天
11
1
将博客搬至CSDN

将博客搬至CSDN

算法与编程之美
昨天
13
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部