我很难掌握OOP原则,因为出于某种原因,我永远不能将它们应用于Web开发.随着我开发越来越多的项目,我开始理解我的代码的某些部分如何使用某些设计模式使它们更容易阅读,重用和维护,所以我开始越来越多地使用它.
我仍然无法理解的一件事是为什么我应该抽象我的数据层.基本上,如果我需要将存储在我的数据库中的项目列表打印到浏览器,我会按照以下方式执行以下操作:
$sql = 'SELECT * FROM table WHERE type = "type1"';'
$result = mysql_query($sql);
while($row = mysql_fetch_assoc($result))
{
echo '
'.$row['name'].'';}
我正在阅读所有这些How-Tos或有关PDO伟大的文章,但我不明白为什么.我似乎没有保存任何LoC,我也看不出它是如何更可重用的,因为我上面调用的所有函数似乎都被封装在一个类中但完全相同.我看到PDO的唯一优势是准备好的陈述.
我并不是说数据抽象是一件坏事,我问的是这些问题,因为我正在尝试正确地设计我当前的类,他们需要连接到DB,所以我想我会以正确的方式做到这一点.也许我只是在阅读关于这个主题的不好文章:)
我真的很感激有关这个主题的任何建议,链接或具体的现实例子!
解决方法:
抽象数据层的另一个优点是减少对底层数据库的依赖.
使用您的方法,当您想使用除mysql之外的其他内容或您的列命名更改或关于mysql的php API更改时,您将不得不重写大量代码.
如果所有数据库访问部分都被巧妙地抽象化,那么所需的更改将是最小的,并且仅限于几个文件而不是整个项目.
如果代码集中在一个地方,重用有关sql注入或其他实用程序功能的代码也要容易得多.
最后,如果所有内容都通过某些类而不是项目中的每个页面进行单元测试,则更容易.
例如,在我最近的一个项目中(抱歉,没有代码共享是可能的),mysql相关的函数只在一个类中调用.从查询生成到对象实例化的所有内容都在这里完成.因此,我非常适合更改到另一个数据库或在其他地方重用此类.
标签:php,mysql,oop,database-abstraction
来源: https://codeday.me/bug/20190723/1516663.html