ares333 发表于 2010-5-20 16:40:42

简单好用的HMVC扩展

本帖最后由 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
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

<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>


主视图(主控制器我就不写了):

................
<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。适合我(不是我)用


964

haohailuo 发表于 2010-5-20 17:48:18

好文章,支持

ares333 发表于 2010-8-20 10:11:24

先顶上来再说

Hex 发表于 2010-8-20 10:24:41

:lol 我还是觉得我发布的 HMVC 扩展更好一些

风中狼 发表于 2010-9-7 13:29:39

本站的强人之一

gzqhxin 发表于 2010-9-9 14:49:00

不是很明白,这样做有什么好处?

Hex 发表于 2010-9-9 15:26:06

回复 6# gzqhxin


    可以实现类似控件的功能,就是把页面某一块做成独立的,这块有自己的 MVC,也就有了自己的行为了,所以可以拿到任何页面的任何地方使用,有利于代码重用,降低耦合。

paladin 发表于 2010-9-11 15:21:27

{:3_50:}好东西啊但是不会用

longjianghu 发表于 2010-9-12 14:33:43

收藏了:)

ahkxhyl 发表于 2010-10-30 21:18:54

:hug:留个记号
页: [1] 2
查看完整版本: 简单好用的HMVC扩展