为了账号安全,请及时绑定邮箱和手机立即绑定

现在的想法是把挑出用的多的函数放到Model里面,把零碎的在留在Controller里面?

现在的想法是把挑出用的多的函数放到Model里面,把零碎的在留在Controller里面?

德玛西亚99 2023-04-03 18:14:33
MVC模式中controller是一个管道,Model是处理器。但是很多时候Controller会需要到不同表的不同内容。这样如果在Model中就会有很多像get_name,get_info,get_id之类的只要一条Query就能完成的功能。感觉很累赘。其实在Controller要用的地方写条Query也就好了,但是这样又破坏了MVC的规则。
查看完整描述

2 回答

?
至尊宝的传说

TA贡献1789条经验 获得超10个赞

其实你说的这个问题很多框架都可以解决,也就是active record功能,也就是根据代码动态生成query语句,它最开始在rails框架里得到推广,并逐步在其他语言里得到实现。比如

$userModel->find_one_by_id(123);

实际上如果你的框架支持active record,像这种简单的根据主键查询,我们是不需要在model里写一行代码的,model基类根据你所调用的方法名,组装成合适query语句,并将查询结果返回给你。

我不知道你使用的是何种语言,但目前基本所有的脚本语言都有active record的实现,你可以在自己的项目中实现这一功能,这样也给后续的开发带来好处。

能在代码中约束的问题,比用一些设计原则约定更加有效,因为你不能保证每个开发者的水平都一致。


查看完整回答
反对 回复 2023-04-07
?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

举一个例子,active record在doctrine里面是这样实现的:假如一个表foo,带字段bar1, bar2, bar3,doctrine会根据table schema直接生成四个文件: FooTable.class.php,FooTableBase.class.php,Foo.class.php,FooBase.class.php。在两个base文件里面,会有自动生成的一系列getter和setter比如getBar1(),setBar1($param)这些方法。base文件是不允许程序员自己修改,它会随着schema的改变而变化。而非base类直接继承了base类,所以看上去这个类会干净许多

查看完整回答
反对 回复 2023-04-07
  • 2 回答
  • 0 关注
  • 119 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信