2016-10-30 2 views
0

Если я хочу создать класс подключения, нормально ли использовать __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; 
    } 
} 


?> 
+0

Пожалуйста, добавьте немного больше информации о своем приложении, вы используете фреймворк? –

+0

Я просто пытаюсь самостоятельно изучить PHP (и кодирование), и я пытаюсь создать систему входа пользователя, которая включает в себя некоторые основные функции: Забыл пароль, проверку электронной почты и логин/выход из системы – comparter

ответ

0

Если вы конструктор частный, только методы в пределах этого класса будут иметь возможность создать экземпляр.

Это полезно, если вы используете шаблон Singleton (https://en.wikipedia.org/wiki/Singleton_pattern) или, если вы создаете фабричный класс, например.

Предоставленный вами код показывает класс, не имеющий других методов, поэтому частный конструктор будет показывать класс бесполезным, если это так.

Короче говоря, если вам нужно создать экземпляр класса «Соединение» из кода вне самого класса, используйте открытый конструктор.

+0

Получил! И я просто пытался сделать то, что вы сказали (называя это снаружи, и это не сработало), поэтому он должен быть публичным в моем случае! – comparter

Смежные вопросы