首页 / PHP / PHP聚合耦合?解决方案
PHP聚合耦合?解决方案
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了PHP聚合耦合?解决方案,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2748字,纯文字阅读大概需要4分钟。
内容图文
![PHP聚合耦合?解决方案](/upload/InfoBanner/zyjiaocheng/213/971e9430b9b7474d977ca63411d3b62f.jpg)
这是一个通用模型接口:
- PHP code
interface API{ public function main(); public function params($value); }
然后,一般模型类继承它:
- PHP code
class test implements API { public function main(){ echo 'hello world!'; } public function params($value){ var_dump($value); } }
前端控制器,解析了URL后实例化模型类,调用接口,传递模型数据:
- PHP code
class Control{ private function __construct(){ self::Router(); $obj = new self::$Model(); self::_Interface($obj); } public static _Interface(API $obj){ $obj -> main(); $obj -> params(); } }
这是我做的简单的耦合结构,但是,这只是相对于控制器和模型类之间的耦合,而且是通用类,如果是特殊类还得使用特殊的接口和控制器,但问题不在这,问题在于我想让模型之间也通过接口交互(数据耦合?),但是想了很多也没有实际的解决办法,该怎样做这个接口呢???
比如,我需要调用一个数据库类的函数,一般情况下是直接调用:
$db = db::main();
#db -> Query(***********************);
但是,这不符合低耦合概念,我只要一改Query();方法就完蛋了,有什么办法能拉取数据??
或者说,给个数据耦合的实例也行,自己慢慢研究算了....
谢谢啦!
(注:我知道,可能会有人说上面的代码不过完善什么的?的确,我是把前端控制器的一些东西都集成起来了,但这不是我今天讨论的焦点,如果给大家带来了视觉上的不便,请见谅)
------解决方案--------------------
说是实话非常不明白你到底要做什么。。。
但是数据层要交互的话,明显应该通过控制层来做,否则要控制层做什么?因为只有控制层知道数据之间有什么具体业务逻辑上的关系,而model仅仅应该关心的是自己的一亩三分地,超出这个范围之外的都应该交给上层处理,这样才是降低了耦合!
另外提到的$db->query的问题,明显可以通过抽离字段、条件、排序等,将query转换成
$db->select()->where()->order()->limit()
下面有2种方式:
1 然后接着抽象
$db::fetch($where, $order, $limit) {
return $db->select('*')->where($where)->order()->limit();
}
调用的时候
$db = db::main();
$db->fetch($where, $order, $limit);
2 或者可以封装一个底层的model基类
basemodel::fetch($where, $order, $limit) {
$db = db::main();
return $db->select('*')->where($where)->order()->limit();
}
模型基础
class test extends basemodel implements API {
function dothing(){
parent::fetch($where, $order, $limit);
}
}
没有明白这个和数据耦合有什么关系,这仅仅是调用db的封装!
------解决方案--------------------
2楼得说的有理,我个人认为降低耦合的办法就是显示层只负责显示,逻辑处理就交个业务逻辑层,数据访问层只管处理数据,个做个的事!
关于数据库类得问题,我建议你去看看uchome的数据库类,我觉得他的类写得还不错,跟2楼说的比较相似!
------解决方案--------------------
既然是控制器的基类。控制器不都可以遵循基类提供的标准执行数据?
------解决方案--------------------
我以为你应经被各种名词带入到一个误区了
你实际上是想在各个功能模块间传递某中信息
其实这是很容易实现的一种机制,就是操作系统中广泛使用的事件驱动或消息驱动
一个模块将自己的需求广播出去,能够实现此需求的模块就此需求返回需要的数据
内容总结
以上是互联网集市为您收集整理的PHP聚合耦合?解决方案全部内容,希望文章能够帮你解决PHP聚合耦合?解决方案所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。