为什么将所有对数据库的操作不封装到库而是实例化表?
发布于:2022-01-17 09:50:54
#1 zhijiangch
- 假如有一个数据库dbtest,里面有多张表
- //留言表
- $guestbook = spClass("guestbook");
- $condition = array('id'=>$id);
- $result = $guestbook->find($condition);
- //文章表
- $article = spClass("article");
- $condition = array('id'=>$id);
- $result = $article->find($condition);
- //...
- 我是否可以直接实例话数据库,而不必每次操作一个表都实例一次,这样的开销是多了一个$table参数,而实例化表的开销是每个表都要有相应的类文件
- $dbtest= spClass("dbtest");
- $condition = array('id'=>$id);
- $result1 = $dbtest->find('guestbook',$condition);
- $result1 = $dbtest->find('article',$condition);
也许每张表创建一个类文件更灵活,不过目前没有发现这样的优势
2015-10-15 20:27:27
#2 meieiem
你想实现这样,为什么不就创建一个名字为 db的类,继承spModel 你每次scClass这个类之后,给它指定一下$table 不就可以达到你的要求了吗?
有一些特定的表操作,比如自动验证啥的,并不是通用的
2015-10-16 16:21:21
#3 zhijiangch
那这样的话怎么传值呢?$this->tbl_name = $table,将$table传值给父类中的$tbl_name,有些是可以传递,有些不那么容易,需要修改父类中的成员函数。
既然框架默认是实例化表的方式,肯定有其原因。
2015-10-16 17:21:06
#4 jake
首先,你可以看看spDB,搜索论坛就有,
再有,实例化一个类,开销很微小,变量就更小了。数据库开发最大开销在数据库和网络开销,所以sp用了单例db
2015-10-16 22:40:53
#5 冈刀飞絮
恩,按你所说,那就不要用spClass 就不需要建立model ,直接用spDB 来操作就行。
2015-10-17 00:01:18
#6 zhijiangch
感谢jake, 感谢冈刀飞絮,受益匪浅!
2015-10-18 11:43:17
#7 zhijiangch
听君一席话,胜过干多年工作,大师就是大师,业界精英就是业界精英!{:soso_e179:}
2015-10-18 12:06:42