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相关推荐
- php对象不公用属性赋值,php 框架 Model 公用的问题
想问下大家用 Laravel / Phalcon 是怎么实现 Model 层复用的. 参与过的很多项目都是 www / wap / api / admin / user 都有的, www 是 pc 端 ...
- Spring boot 三层框架dao层、service层、controller层+实体model层
Spring boot 三层框架dao层.service层.controller层+实体model层 model层 dao层 service层 controller层 首先创建一个springboot ...
- java model类作用_SPRING框架中ModelAndView、Model、ModelMap区别及详细分析
注意:如果方法声明了注解@ResponseBody ,则会直接将返回值输出到页面. 首先介绍ModelMap[Model]和ModelAndView的作用 Model 是一个接口, 其实现类为Exte ...
- Spring MVC 控制层model.addAllAttribute()和model.addAllAttributes()方法的区别
model.addAllAttributes(ladingInfoList); //model.addAllAttributes(map); model.addAttribute("tota ...
- 1_MVC+EF+Autofac(dbfirst)轻型项目框架_core层(以登陆为例)
前言 在上一篇0_MVC+EF+Autofac(dbfirst)轻型项目框架_基本框架中,我已经介绍了这个轻型框架的层次结构,在下面的这篇文章中,我将以教师登陆功能为例,具体来扩充下我的core层的代 ...
- Django框架——模型层单表操作、模型层多表操作、模型层常用和非常用字段和参数、模型层进阶
文章目录 1 模型层-单表操作 一 ORM简介 二 单表操作 2.1 创建表 1 创建模型 2 更多字段 3 更多参数 4 settings配置 5 增加,删除字段 2.2 添加表纪录 2.3 查询表 ...
- [单片机框架][drivers层][cw2015] fuelgauge 硬件电量计(二)
接上一篇:[单片机框架][device层] fuelgauge 电量计 [单片机框架][drivers层][cw2015] fuelgauge 硬件电量计(一) 本章是硬件电量计的使用方法,采用IIC ...
- model.train()和model.eval()的用法及model.eval()可能导致测试准确率的下降
问题导入: 一般我们在训练模型时会在前面加上:model.train() 在测试模型时会在前面使用:model.eval() 但是在某次使用网络测试模型时,训练准确率很高,但测试准确率很低,排查了各种 ...
- nodejs mysql 模型_nodejs+mysql中怎样的model才是好的model?
这么巧我刚刚写了一段这个代码,而且写得我自己挺满意,share一下其中的逻辑:1.update的封装functionupdateRecord(model,obj,criteria,callback){ ...
最新文章
- python评语生成_如何评价生成模型框架 ZhuSuan?
- Leetcode-探索 | 存在重复
- 开放下载!《15分钟打造你自己的小程序》(内附详细代码)
- 很多人都不知道学了c/c++到底能做什么?让大牛来告诉你............
- execjs回调python_python使用execJS运行js函数例子
- go语言mysql删除记录_MySQL数据库删除操作-Go语言中文社区
- 学Python时需注意:单引号、双引号、三个单引号和三个双引号区别
- vue跳转下个页面关闭当前页面_如何机智判断页面是刷新还是关闭,背景:vue项目,需求:关闭页面,下次直接跳到登陆页...
- MySql免安装版安装配置,附MySQL服务无法启动解决方案
- AT24C02/04/08 地址理解
- 电子/自动化专业常用软件介绍
- JAVA实现 - 问题 G: 超大型 LED 显示屏
- Caused by: java.sql.BatchUpdateException: ORA-00001: 违反唯一约束条件 (DSPACE.SYS_C007868)
- CLion - 卸载
- oracle中的存储过程是什么,oracle存储过程是什么?
- 一步步带你了解分布式数据库的架构演变之路!
- 行动力强大的人,都是“二进制”的
- 测试开发面试题目(三)——测试用例、安卓苹果系统区别、小程序与app的区别
- Figma 中文社区找到了!
- 超级P2P搜索引擎让所有收费网站破产!