PHP 的 sql 到底该写在哪儿?

2020-04-13 18:17:18 +08:00
 taaaang

最近刚接触 PHP,过了一遍 PHP 官方文档和 thinphp 的官方文档就开干。然后用到原生 sql,不知道正常情况应该写在哪儿更合适,controller ? 还是单独整一层? 或者一起放在 model 里面? 求大佬们指点下,怎么搞看起来专业一点。。。

8043 次点击
所在节点    PHP
66 条回复
zooo
2020-04-13 18:20:13 +08:00
controller
service
dao

dao 层里面写

data access object
taaaang
2020-04-13 18:24:27 +08:00
@zooo
我一直是搞 java 方面的,最近因为做兼职项目所以搞 PHP 。 根据 thinkphp 文档来看,就提供了 controller 和 model,然后 model 主要是封装了模型的基本操作。看了一个叫 apiadmin(基于 thinkphp)的开源项目,一些数据库操作它直接就在 controller 里面写了, 很迷
chotow
2020-04-13 18:33:23 +08:00
Controller 注入 Service,Service 注入 Repository 。
我个人不喜欢 DAO,所以用 Repository 。
如果项目不大,直接在 Service 操作 DB 。
zooo
2020-04-13 19:44:08 +08:00
Repository 和 dao 差不多吧? 换个名字
m939594960
2020-04-13 19:55:48 +08:00
@zooo #1 搞 PHP 就搞 PHP 用啥 dao 命名? 这个词除了在 java 里有意义之外还有什么实际意义么?
2kCS5c0b0ITXE5k2
2020-04-13 19:59:17 +08:00
我个人做法是用 trait 封装一些常用的方法。 然后在 model 层写。php 没那么严谨 写在那层都可以
m939594960
2020-04-13 19:59:49 +08:00
@zooo #1 搞 PHP 就搞 PHP 用啥 dao 命名? 这个词除了在 java 里有意义之外还有什么实际意义么?
AngryPanda
2020-04-13 20:02:24 +08:00
@m939594960 微软也用呢。
2kCS5c0b0ITXE5k2
2020-04-13 20:06:21 +08:00
tp 的 model 层类似 Java 里面的 service 层+dao 层的合体。
sagaxu
2020-04-13 20:18:24 +08:00
tp 用户,写哪都行,就是混在 html 里问题也不大
yxwzaxns
2020-04-13 20:20:22 +08:00
都是老千层饼啊
zooo
2020-04-13 20:20:28 +08:00
@m939594960 赞同 你
Takamine
2020-04-14 00:11:59 +08:00
写在 model 吧,然后自己在 model 和 controller 之间加个 service 层。
heyjei
2020-04-14 00:23:01 +08:00
写在 controller 里,不然就对不起 Quick And Dirty 这个称号,复杂且会存在共用的逻辑才抽取出来放 Service 里。Model 负责定义数据模型,不要把逻辑放里面了。
guolaopi
2020-04-14 00:23:17 +08:00
楼上说的写到 model 里是要把 model 做成 DDD 里的充血模型(滑稽
hbolive
2020-04-14 00:51:37 +08:00
既然兼职的,controller 里干就是了,讲究那么多干啥。。
2kCS5c0b0ITXE5k2
2020-04-14 01:34:25 +08:00
@guolaopi 学习了 之前写的小项目都是写在 model 里面的 确实有点不合理 还是抽离出一个 service 层比较好管理 和解耦
kaiki
2020-04-14 04:48:56 +08:00
看给多少钱,钱少我就哪里需要写哪里,钱多就规范点。
专不专业得看谁来看的,如果对方啥都不懂,那你写啥都专业。
avenger
2020-04-14 07:16:02 +08:00
model 里面用 orm,不写 sql 🐶
815979670
2020-04-14 07:36:09 +08:00
有 orm,调用对象就行了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/662056

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX