亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

現在的想法是把挑出用的多的函數放到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 關注
  • 220 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號