数据库连接构造函数:私有还是公共?

时间:2016-10-30 10:06:17

标签: php

如果我想创建一个连接类,是否可以将__construct设为私有?或者,如果一次有多个用户,这将阻止用户连接?或者我正在做一些完全错误的事情,这个连接类甚至不应该存在? (使用没有特定类的连接会更好吗?)

代码:

   <?php

class Connection
{     
    private $host = "hostname";
    private $db_name = "somedatabase";
    private $username = "username";
    private $password = "";
    private $conn;

    private function __construct()
 {


        try {
        $this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->db_name, $this->username, $this->password);
            $this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
            echo "Connected Successfully Bro";
        }
  catch(PDOException $exception) 
  {
            echo "Connection error: " . $exception->getMessage();
        }

        return $this->conn;
    }
}


?>

1 个答案:

答案 0 :(得分:0)

如果您将构造函数设为私有,则只有该类中的方法才能创建它的实例。

如果您要实现Singleton模式(https://en.wikipedia.org/wiki/Singleton_pattern),或者您正在创建工厂类,那么这很有用。

您提供的代码显示该类没有任何其他方法,因此如果是这种情况,私有构造函数将使该类无用。

简而言之,如果您需要从类本身之外的代码实例化“Connection”类,请使用公共构造函数。