php model db 赋值,PHP 框架 Model 层是否应该统一 DB 和 Cache
之前看到 xiuno 號稱高承載,然后看了一下數據庫是 MyISAM 引擎(這個就不提了),一直困擾我的 LIMIT 效率問題發現它的實現也只是簡單的在 thread.class.php 中判斷超過多少頁之后倒序取數據。
后來發現它統一了 db 和 cache 的方法為 get/set,很喜歡這樣的方式,這樣在 Model 出口之前,對于 Action 來講底層數據來源就變得透明了,可以直接配置文件開啟緩存,而 Action 并不需要關心這些。
但是看到 Model 的抽象基類在調用 db 和 cache 的時候,貌似統一了方法名也沒帶來什么好處啊?
db
get/set/...
cache
get/set/...
model
get
# cache enable
db_cache_get
cache_get OR db_get&cache_set&cache_get
# cache disable
db_get
set
# cache enable
db_cache_set
cache_set&db_set
# cache disable
db_set
cache_get 和 db_get 中雖然都是獲得相應的 instance 然后一致的 get,這個名字統一貌似也沒帶來什么好處嘛...
1、既然要統一,為啥不統一 implements 同一個 interface 或者 extends 同一個 abstract?即使不統一,db 一個 interface,cache 一個 interface,Model 中的 db_get 和 cache_get 還是照樣各自實現各自啊,看到 db/cache/Model 一遍遍的 get/set 實在是... 而且 Model 中各種各樣的 get/set 也感覺有點“野”。前輩們在實現的時候如果有過這樣的場景,是怎么實現的呢?
2、是不是應該在 Model 中統一 db 和 cache 操作呢,這樣對于 Action 來說不是更方便透明嗎?一個配置文件就可以開關緩存,但是發現 CI 和 Yii 的 cache 操作例子中,很多 cache 操作直接穿透到了 Action 中。如果需要統一,那是在 db/cache 和 Model 之間加一層,還是直接在 Model 基類中實現合適呢?
總結
以上是生活随笔為你收集整理的php model db 赋值,PHP 框架 Model 层是否应该统一 DB 和 Cache的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 利用MATLAB进行系统时域分析,实验二
- 下一篇: 特斯拉又出事!疑似车辆失控撞向公交 车头