HMVC in Kohana:请求工厂模式

本文详细介绍了在Kohana框架中使用HMVC(Hierarchical Model View Controller)进行项目开发的技巧与方法,包括如何降低项目间的依赖性、鼓励代码重用、提高可扩展性和维护性。通过实例展示了如何在控制器和视图中利用RequestFactory实现HMVC,以及如何将其整合到其他开源项目中,如Wordpress。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个最佳的分层结构:

  • 降低项目之间的依赖性

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

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

在客户端使用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


转载于:https://my.oschina.net/u/1757002/blog/308074

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值