2016-10-30 3 views
0

接続クラスを作成したい場合は、__constructをプライベートにすることは問題ありませんか?それは一度に複数のユーザーがいる場合、ユーザーが接続できないようにしますか?あるいは、私は完全に間違っている何かをしています、そして、この接続クラスは存在すべきではありませんか? (?特定のクラスなしの接続を使用すると良いでしょう)データベース接続コンストラクタ:privateまたはpublic?

コード:

<?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

あなたは、コンストラクタをプライベートにする場合は、そのクラス内の唯一の方法は、それのインスタンスを作成することができます。

シングルトンパターン(https://en.wikipedia.org/wiki/Singleton_pattern)を実装する場合や、たとえば、ファクトリクラスを作成する場合などに便利です。

あなたが提供したコードは、他の方法を持たないクラスを示しているため、プライベートコンストラクタはそのような場合にクラスを役に立たなくします。

つまり、「Connection」クラスをクラス自体の外部のコードからインスタンス化する必要がある場合は、パブリックコンストラクタを使用します。

+0

そして、私はちょうどあなたが言ったことをしようとした(外からそれを呼び出すと、それは動作しませんでした)ので、私の場合に公開する必要があります! – comparter

関連する問題