这是我第一篇文章,请让我知道是否可以改进问题。针对PHP和MySQL的简单数据库抽象
我正在更新网站。总之:它处理用户订阅并跟踪销售(我制作的产品)。我希望在不久的将来为我们添加新功能。它使用PHP和MySQL构建。
5年来我没有认真地更新过代码,我正在努力抓住机会让整个代码更易于管理和更新。特别是,我试图使数据库与更好的交互。
我打得四处ezSQL这让我在一个非常简洁的方式与数据库交互,如:
$users = $db->get_results("SELECT name, email FROM users");
foreach ($users as $user) {
// Access data using object syntax
echo $user->name;
echo $user->email;
}
我真的很喜欢它:我很快与一个对象,我可以使用结束和它使代码更好地阅读,而不必像过去那样拥有更多的mysql_ *函数或SQL查询。
如果它是SELECT查询不错,但没有太大的INSERT语句的帮助,我可能最终的代码看起来像这样:
$db->query("INSERT INTO users (name, email, date, hostname, cid, code, email_id, email_date, source, ebook, audiobook)
VALUES ('" . $db->escape($user->name) . "',
'" . $db->escape($user->email) . "',
'" . $db->escape($user->date) . "',
'" . $db->escape($user->hostname) . "',
'" . $db->escape($user->cid) . "',
'" . $db->escape($user->code) . "',
'" . $db->escape($user->email_id) . "',
'" . $db->escape($user->email_date) . "',
'" . $db->escape($user->source) . "',
'" . $db->escape($user->ebook) . "',
'" . $db->escape($user->audiobook) . "')"
);
它可能会更糟糕,但它仍然不是那么很高兴通过。对我来说最糟糕的部分是它不像前面的例子那么直截了当。
因此,考虑到如下表结构和PHP对象:
$user = new User();
$user->name = 'something';
$user->email = '[email protected]';
/// etc.
class User {
var $name;
var $email;
// etc.
}
我想一个简单的库,可以让我这样做只是这:
$user->insert();
...每个成员匹配与我的数据库中同名的列的类相应地插入数据。
我的问题是:有没有这样的图书馆?如果没有,为什么这是一个坏主意。
我一直在阅读关于MVC,但我认为这是对这个项目的矫枉过正。这会增加无关的复杂性而不是简单。例如,我不需要脚手架,也不需要为我生成默认代码。另外,我不想最终陷入一个对于这样一个简单项目来说太过分的框架。所以我一直很好奇PHP的数据库抽象层(例如:ADOdb,PDO),但我不清楚他们是否主要打算缩短书写代码(我的预期用法)或写作代码为各种数据库更容易。我不介意我的代码只适用于MySQL。我只是为了清晰而不是兼容性而抽象它。
而不是必须测试驱动PHP的每个DAL,有人可能会提供反馈,基于经验和上述简单的预期用途?
谢谢你的帮助。
谢谢,这是一个很好的答案。 –