繁体   English   中英

如何将SQL与PHP分开?

[英]How can I separate SQL from my PHP?

关于Uncle Bob在Clean Code中的服务 ,我想在我的PHP代码中没有SQL。 目前我正在使用Prepared Statements,我已将我的数据库访问代码考虑到模型类中。

我最初的想法是将我的SQL分解为单独的SQL文件,然后在运行时加载它们。 由于这涉及更多的磁盘IO(我的直觉),我想知道是否有人建议以另一种方式做到这一点。

此外,我很想知道是否有人试过这个和什么红利(如果有的话还清)。

谢谢。

如果您只是想分离SQL,为什么不使用存储过程?

我给你的建议是不要犯这么多错误试图把PHP变成不是的东西。

PHP是一种以Web为中心的模板语言,允许您在HTML页面中嵌入代码。 它有一个请求生命周期而不是持久性(就像Java servlet一样)。 它的API在很大程度上是程序性的。

这些都不是问题。

然而,你会发现那些坚持试图强迫对象模型,ORM以及他们习惯使用的其他结构从C#或Java编程到PHP的人,这往往是一个错误。

为了专门回答你的问题,我倾向于将我的所有查询(函数)放在一个文件中(如果有很多文件,或者更多,我将通过数据库或某些功能分离将它们分开)和SQL只是在功能中的heredocs。 不在yoru代码中嵌入SQL逻辑很有用。

你可以将SQL放在文本文件中并使用file_get_contents() ,但你获得了什么?

手动绞尽脑汁并尝试将其他语言和框架的原则应用于PHP,这一点毫无意义。 使用PHP来擅长(或使用别的东西)。 无论哪种方式,你都会更快乐。

我认为您正在寻找的是数据访问层。 我还没有阅读“清洁代码”,但我猜想鲍勃叔叔正在进行的是在整个地方没有一堆原始的SQL和数据库设置/访问代码。 摘要将数据库准备,执行等代码转换为单独的模块并从那里开始工作。

关于使用存储过程的评论也是一个好主意恕我直言,虽然这是一个备受争议的话题,双方都有好的观点。 我倾向于使用SP,但它们不适合所有人或每种情况。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM