PHP 的 sql 到底该写在哪儿?
最近刚接触 PHP,过了一遍 PHP 官方文档和 thinphp 的官方文档就开干。然后用到原生 sql,不知道正常情况应该写在哪儿更合适,controller ? 还是单独整一层? 或者一起放在 model 里面? 求大佬们指点下,怎么搞看起来专业一点。。。
最近刚接触 PHP,过了一遍 PHP 官方文档和 thinphp 的官方文档就开干。然后用到原生 sql,不知道正常情况应该写在哪儿更合适,controller ? 还是单独整一层? 或者一起放在 model 里面? 求大佬们指点下,怎么搞看起来专业一点。。。
dao 层里面写
data access object
我居然因为一个代码组织的问题来专门提个问题,也真是心累了。。。
如果是类似 mybatis 的框架 sql 就写到 mapper xml 文件里,花点时间自己手动构造每个 DAO 。
其他比如 PDO 这种全局变量的,哪里都能写,你安自己项目需求写呗,只要合理就行。
如果需要对一些操作进行封装,比如对多个批量操作采用事务,可以写在 model,便于复用。
其实不用太在乎写在哪里,而应该在乎是否好用好用,便于用即可,实际写写看。
比如用户充值,需要修改余额和生成充值记录,那么直接用$user->recharge($money)我觉得是比较方便和复用的,那么对我来说就是适合的,
因为如果写在控制器里面,那么不能复用,
如果单独抽取 service 层,你用的时候就得 UserService::Recharge($user_id,$money),UserService 里面你得再次实例化 User,当然你也可以直接传$user 进去,但是我懒。
代码怎么简单明了够用就怎么写吧,大部分时候代码行数越少就越容易维护。
有些人接手公司的项目,连框架规范都不愿意看,model 里面套 service,service 里面再套 dao,自己觉得在 IDE 里面爽得不行,完全大傻逼
dao 你妈逼 dao

比如用户充值,需要修改余额和生成充值记录,那么直接用$user->recharge($money)我觉得是比较方便和复用的,那么对我来说就是适合的,
按业务来分的话
UserService::Recharge($user_id,$money)
这个走 RechargeModel 还可能要用到 LogModel 还看看用户是否有钱 UserInfoModel
UserService::GetProfile($user_id)
用 UserInfoModel