背景
最近一直使用PhalApi开发接口,由于业务需求需要用到mongodb,发现框架内就没有mongo的驱动,心血来潮想要自己加上mongo驱动,但是悲剧的发现,框架作者居然没有给出一个db的接口。好吧,完全自己来!由于我也是第一次尝试去写框架的数据库接口,不知道从何下手,就是一个字“瞎”。但是为了实现数据库接口的编写,我想到了“借鉴”,所以,去github上clone了TP,CI,YII分别分析了这些框架的数据库部分是如何设计的,然后就有了本文。
学习
看完了YII的相关数据库驱动,大概总结了下,就是下图了。结合ThinkPHP的数据库原理,发现其实大部分的框架在DB操作部分都差不多,基本都是这个样子。难就难在如何平滑的切换数据库,就是说我在不改变现有代码只是改变配置的情况下,就可以适用不同的数据库了。想要实现这个目的,不同的框架的做法都不太一样,有的选择在组合SQL语句时候处理,有的选择在数据库驱动的地方做处理,甚至有人在两个步骤里都做了处理。但是我发现SQL的处理和数据库驱动必然是需要去做适配的,那么我决定将两个合二为一,做一个数据库适配层,在其上层做数据库连接层,统一函数名,统一参数格式,那么轻松实现数据库的平滑切换的工作喽。
时间: 2024-10-07 00:34:17