这是我在这里的第一篇文章,请告诉我如何改进问题。
我正在更新一个网站。简而言之:它处理用户订阅并跟踪销售(我制作的产品)。我希望保持开放式选项,以便在不久的将来添加新功能。它使用PHP和MySQL构建。
我已经有5年没有认真更新过代码了,并且我正在抓住机会使整个代码更易于管理和更新。特别是,我试图使与数据库交互更加友好。
我已经尝试使用ezSQL,它让我以非常简洁的方式与数据库交互,例如:
我很喜欢它:我可以快速得到一个可用的对象,使代码更易读,而不需要使用那么多mysql_*函数,也不会像以前那样到处都是SQL查询语句。
如果对于SELECT查询来说很好用,但对于INSERT语句并没有太大帮助,我可能最终会得到像这样的代码:
这可能不是很好,但仍然不太容易处理。对我来说最糟糕的部分是它根本不像前一个示例那样直截了当。
因此,考虑到以下表结构和PHP对象:
...并且将类的每个成员与数据库中同名的列匹配,并相应地插入数据。
我的问题是:是否有这样的库?如果没有,为什么不好。
我一直在阅读MVC,但我认为这对于这个项目来说太过复杂了。它会增加多余的复杂性而不是简单性。例如,我不需要脚手架或任何生成默认代码的东西。此外,我不想陷入一个对于这个简单项目来说太过庞大的框架。
因此,我对PHP的数据库抽象层(例如:ADODb、PDO)很感兴趣,但目前还不清楚它们主要是用来缩短编写代码的时间(我的预期使用),还是使编写代码更容易适用于各种数据库。我不介意我的代码只能在MySQL上运行。我只是想为了清晰度而进行抽象处理,而不是为了兼容性。
除了必须测试每个PHP DAL之外,是否可以根据经验和上述简单预期使用提供反馈?
谢谢您的帮助。
我正在更新一个网站。简而言之:它处理用户订阅并跟踪销售(我制作的产品)。我希望保持开放式选项,以便在不久的将来添加新功能。它使用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之外,是否可以根据经验和上述简单预期使用提供反馈?
谢谢您的帮助。