So weisen Sie Modelle im MVC-Modell einer Website zu.
巴扎黑
巴扎黑 2017-05-16 17:06:54
0
7
590

Im MVC-Modell ist der Controller eine Pipeline und das Modell der Prozessor. Aber oft benötigt der Controller unterschiedliche Inhalte aus verschiedenen Tabellen. Auf diese Weise gibt es im Modell viele Funktionen wie get_name, get_info, get_id usw., die mit nur einer Abfrage ausgeführt werden können. Es fühlt sich umständlich an. Eigentlich wäre es gut, eine Abfrage zu schreiben, wo der Controller verwendet werden soll, aber das verstößt gegen die Regeln von MVC.

Die aktuelle Idee besteht darin, die am häufigsten verwendeten Funktionen in das Modell aufzunehmen und die fragmentarischen im Controller zu belassen.
Bitte sagen Sie mir Ihre Meinung~

巴扎黑
巴扎黑

Antworte allen(7)
習慣沉默

瘦C,胖M,C最好不要超过15行

迷茫

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

$userModel->find_one_by_id(123);

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

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

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

世界只因有你

可以参考下fowler的模式书, 事物脚本,表模块,领域模型三种风格.

迷茫

我不知道ci是如何实现active record的,不过你说的小函数,在许多php的active record实现里面都是使用的魔术方法,或者代码生成器自动帮你生成的,都不用你自己写。

举一个例子,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类,所以看上去这个类会干净许多

滿天的星座

把你的应用逻辑放在model里面

Peter_Zhu

做好分层吧,controller负责页面级别的控制逻辑

迷茫

。。。。。。。。。。。

Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage