用户
 找回密码
 入住 CI 中国社区
搜索
查看: 8493|回复: 11
收起左侧

[优化] 简单好用的HMVC扩展

  [复制链接]
发表于 2010-5-20 16:40:42 | 显示全部楼层 |阅读模式
本帖最后由 ares333 于 2010-9-8 08:47 编辑

之前的那个版本太过复杂,还要修改系统文件,虽然功能强大,但是难于维护和使用,所以后来写了一个绿色环保的HMVC,实用价值很大,已经稳定运行在两个网站.
不费话了直接说原理,扩展Loader.php,添加一个module()函数,module都放在applica/modules 目录,可以支持多级目录,module可能用到的视图文件放在views/_modules目录,这两个目录是必须的,要不module放哪里呀,但是这两个目录位置可以在扩展后的loader中修改.

必读:
1。调用
控制器或视图中,$this->load->module('header',array());
2.在module中调用视图
很简单,只要module的data属性不为空就行也就是$this->data;
视图在哪里?视图默认在application/views/_moduels/(module名字)/(module方法).php,
3.返回值
如果调用了视图返回的是渲染后的视图,直接echo就行,否则返回你return的内容.
4。定义module
这个就更没技术含量了,没有继承任何父类,只能用万能函数了(&get_instance());
5.安装
直接拷贝X_Loader到application的libraries目录完事,别的什么也不用动,纯绿色

举例(简单的演示):
定义module
application/modules/views.php
PHP复制代码
 
<?php
class Views_module{
public $CI;
 
function __construct(){
  $this->CI=&get_instance();
}
 
//通用头部视图
function header(){
  $this->data['login']=TRUE;
}
 
//通用底部视图
function footer(){
  $this->data['temp']='';
}
}
 
复制代码


定义页面底部的视图:
application/views/_modules/views/footer.php
HTML复制代码
 
<div id="footer">
  <p><a href="<?php echo site_url('footer/about');?>" target="_blank">关于我们</a>  |  <a href="<?php echo site_url('footer/faq');?>" target="_blank">常见问题</a>  |  <a href="<?php echo site_url('footer/contact');?>" target="_blank">联系我们</a>  |  <a href="<?php echo site_url('footer/bug_report');?>" target="_blank">报告错误</a></p>
  <p> 页面执行时间:  {elapsed_time}s<br />
    系统消耗内存:  {memory_usage}<br />
    <!--<a target="_blank" href="http://wpa.qq.com/msgrd?v=1&uin=523574167&site=qq&menu=yes"><img border="0" src="http://wpa.qq.com/pa?p=2:523574167:41" alt="点击这里给我发消息" title="523574167"></a>--><br />
  </p>
</div>
 
复制代码


主视图(主控制器我就不写了):
HTML复制代码
 
................
<body>
<?php echo $this->load->module('views/header');?>
<div id="container">
</div>
<?php echo $this->load->module('views/footer');?>
</body>
</html>
 
复制代码


优点:
绿色环保无污染,简单实用!容易扩展

来点题外话,什么是最好的?
有3点必须满足:
1。简单
2。实用
3。适合我(不是我)用

[attach]
964
[/attach]

X_Loader.rar

948 Bytes, 下载次数: 53

发表于 2010-5-20 17:48:18 | 显示全部楼层
好文章,支持
 楼主| 发表于 2010-8-20 10:11:24 | 显示全部楼层
先顶上来再说
发表于 2010-8-20 10:24:41 | 显示全部楼层
我还是觉得我发布的 HMVC 扩展更好一些
发表于 2010-9-7 13:29:39 | 显示全部楼层
本站的强人之一
发表于 2010-9-9 14:49:00 | 显示全部楼层
不是很明白,这样做有什么好处?
发表于 2010-9-9 15:26:06 | 显示全部楼层
回复 6# gzqhxin


    可以实现类似控件的功能,就是把页面某一块做成独立的,这块有自己的 MVC,也就有了自己的行为了,所以可以拿到任何页面的任何地方使用,有利于代码重用,降低耦合。
发表于 2010-9-11 15:21:27 | 显示全部楼层
好东西啊但是不会用
发表于 2010-9-12 14:33:43 | 显示全部楼层
收藏了:)
发表于 2010-10-30 21:18:54 | 显示全部楼层
留个记号

本版积分规则