简单好用的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
好文章,支持 先顶上来再说 :lol 我还是觉得我发布的 HMVC 扩展更好一些 本站的强人之一 不是很明白,这样做有什么好处? 回复 6# gzqhxin
可以实现类似控件的功能,就是把页面某一块做成独立的,这块有自己的 MVC,也就有了自己的行为了,所以可以拿到任何页面的任何地方使用,有利于代码重用,降低耦合。 {:3_50:}好东西啊但是不会用 收藏了:) :hug:留个记号
页:
[1]
2