2009-07-17 18 views
1

我有一个数据库类,它的构造使得它在第一个查询运行时打开到数据库的连接。应该为每个用于该网站的用户,组等的其他类别创建一个数据库对象吗?这使得这些类很容易在别处部署;他们只会依赖于数据库类。然而,这将需要我把证书放在每个班级。另一种对我来说不那么麻烦的方法是创建一个数据库对象并将它保存在一个全局变量中。这可以减少活动的数据库连接,因为它更易于配置;凭证只需设置一次。每个班级或整个网站的数据库对象?

某处我听说应该避免使用全局变量。最佳实践方法是什么?

+0

退房梨如果你还没有...可能会节省你一些时间http://pear.php.net/package/DB – 2009-07-17 13:28:23

回答

1

你可以让你的其他类需要一个数据库连接对象在其构造。这样他们不必知道凭证。

另一种常见的方式是使用单身进行数据库连接。尽管基本上这仍然是一个全局变量,但它的确意味着你可以在一个地方控制数据库对象的实例化。

0

我会做一个基类,只包含连接管理的东西,没有任何表特定的。然后你可以把凭据放在那里。

另一个选择是在这样的基类上使用一个静态变量来存储凭据(而不是将它们硬编码到一个很脏的函数中)。

所以BaseDBConnection::$usernameBaseDBConnection::$password将包含凭据,和您的其他DBConnection的类从BaseDBConnection派生并指self::$username

0

您应该避免全局数据库对象。您的数据库应尽可能早地打开并尽快关闭。

您应该在每个类的内部使用一个数据库对象,并且只有在需要时才应该打开/关闭数据库对象。

0

我会创建一个'配置'文件,基本上只是将凭据存储为变量并将其包含在所需的Class文件中。

这样,任何凭据更改只需要更改'配置'文件。

编辑:

我忘了提,这意味着你的数据库类的新实例,应该在每一个类实例化。

相关问题