通过构造函数连接到数据库,通过析构函数关闭?

时间:2012-02-13 17:42:48

标签: php mysql

我对PHP和MySQL中的数据库连接有疑问。我想知道是否可以保持数据库连接打开,使用类打开并在构造函数中定义连接,然后在析构函数中再次关闭连接。

我目前有一个类是“html”类,我的网站使用它的布局等等。它会不会造成任何形式的(后来的)问题,安全隐患等,如果我按照我之前的建议做的那样呢?

此致

3 个答案:

答案 0 :(得分:1)

在构造函数中打开连接并且通常然后将连接资源存储在类的属性中并不罕见。

您可以在构造函数中显式关闭数据库连接,但通常不需要这样做,因为PHP将在脚本不再需要时隐式关闭连接。

class db {
  public $connection;

  public function __construct($params...) {
     $this->connection = mysql_connect(...);
     if (!$this->connection) {
        // throw an exception or set an error status...
     }
  }  
}

答案 1 :(得分:0)

你可以这样做,是的,但即便如此,我还是建议使用持久连接。您可以考虑将Singleton模式应用于此类对象,以使其不太可能被错误地使用。还要考虑使保存连接资源的成员变量是静态的。

如迈克尔所述,当脚本结束时,对象将消失,但如果您愿意,使用析构函数的优点是在脚本因任何特殊原因而结束之前调用它。

而且,根据您的实际用例,我建议您将与布局相关的类与数据库相关的类分开。

答案 2 :(得分:-1)

不确定,但我知道你可以在函数参数中发送SQL连接。