这是我在这里的第一篇文章,如果我可以改进这个问题,请告诉我。
我正在更新网站。简而言之:它处理用户订阅并跟踪销售(我生产的产品)。我想保留我的选项,以便在不久的将来为其添加新功能。它是使用 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 = 'something@example.com';
/// etc.
class User {
var $name;
var $email;
// etc.
}
我想要一个简单的库,可以让我这样做:
$user->insert();
...并为我将类的每个成员与数据库中同名的列匹配,并相应地插入数据。
我的问题是:有这样的图书馆吗?如果不是,为什么这是一个坏主意。
我一直在阅读有关 MVC 的内容,但我认为这对这个项目来说太过分了。它会增加无关紧要的复杂性而不是简单性。例如,我不需要脚手架,也不需要任何为我生成默认代码的东西。另外,我不想最终陷入一个对于这样一个简单的项目来说太过分的框架。
所以我一直对 PHP 的数据库抽象层(例如:ADOdb、PDO)很好奇,但我还不清楚它们主要是为了缩短编写代码(我的预期用途)还是为各种数据库编写代码更轻松。我不介意我的代码只适用于 MySQL。我只是想为了清楚起见而抽象它,而不是兼容性。
不必为 PHP 测试每个 DAL,有人可以根据经验和上述简单的预期用途提供反馈吗?
感谢您的帮助。