gpt4 book ai didi

php - 为什么我应该抽象我的数据层?

转载 作者:可可西里 更新时间:2023-11-01 07:49:15 26 4
gpt4 key购买 nike

OOP 原则对我来说很难掌握,因为出于某种原因我永远无法将它们应用到 Web 开发中。随着我开发越来越多的项目,我开始理解我的代码的某些部分如何使用某些设计模式来使它们更易于阅读、重用和维护,因此我开始越来越多地使用它。

我仍然不能完全理解的一件事是为什么我应该抽象我的数据层。基本上,如果我需要将存储在我的数据库中的项目列表打印到浏览器,我会按照以下方式做一些事情:

$sql = 'SELECT * FROM table WHERE type = "type1"';'
$result = mysql_query($sql);

while($row = mysql_fetch_assoc($result))
{
echo '<li>'.$row['name'].'</li>';
}

我正在阅读所有这些 How-Tos 或鼓吹 PDO 伟大之处的文章,但我不明白为什么。我似乎没有保存任何 LoC,而且我看不出它会如何提高可重用性,因为我在上面调用的所有函数似乎都封装在一个类中,但做的事情完全相同。我看到 PDO 的唯一优势是准备好的语句。

我并不是说数据抽象是一件坏事,我问这些问题是因为我正在尝试正确设计我当前的类并且它们需要连接到数据库所以我想我会这样做 < em>正确的方式。也许我只是在阅读有关该主题的糟糕文章:)

如果有任何关于该主题的建议、链接或具体的现实生活中的例子,我将不胜感激!

最佳答案

将数据层抽象化作为一种​​在未来节省时间的方式。

用你的例子。假设您更改了表的名称。您将不得不转到具有使用该表的 SQL 的每个文件并对其进行编辑。在最好的情况下,这是一个搜索和替换 N 个文件的问题。如果您只需编辑一个文件,即包含所有 sql 方法的文件,您本可以节省大量时间并将错误降至最低。

这同样适用于列名。

这只是考虑重命名内容的情况。完全改变数据库系统也是很有可能的。例如,您的 SQL 可能在 Sqlite 和 MySQL 之间不兼容。您将不得不再次编辑大量文件。

抽象允许您将一个部分与另一个部分分离。在这种情况下,您可以在不影响 View 部分的情况下更改数据库部分。

对于非常小的项目,这可能会带来更多麻烦而不是值得的。即使那样,您仍然应该这样做,至少要习惯它。

关于php - 为什么我应该抽象我的数据层?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5314697/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com