1

シングルトン パターンを使用して db util クラスを作成しようとしています。私の問題は、「接続」オブジェクトが常に null であることです。接続設定が正しい。私は何が間違っている可能性がありますか? また、私はphp開発に比較的慣れていません。何が問題なのかを理解するには、どの方法を使用すればよいですか? コードは次のとおりです。

   class DBUtil {
        public $connection = NULL; //mysqli_connection object
        private static $instance = NULL;

        private function _constructor($conn){
            //$this->connection = mysqli_connect(TagMetroConfiguration::getConfigurationValueFor("db_servser_name"), TagMetroConfiguration::getConfigurationValueFor("db_username"), TagMetroConfiguration::getConfigurationValueFor("db_password"), TagMetroConfiguration::getConfigurationValueFor("db_name"));
            $this->connection = new mysqli("localhost", "root", "toor", "testdb");
        }

        public static function getInstance(){
            if(DBUtil::$instance == NULL){
                try{
                    DBUtil::$instance = new DBUtil();
                }catch(Exception $ex){
                    throw new Exception("Unable to create DB Instance");
                }
            }

            return DBUtil::$instance;
        }
}
4

4 に答える 4

3

コンストラクター関数に名前を付ける必要があります__construct(2 つのアンダースコアに注意してください)。

また、コンストラクターには 1 つのパラメーターがあります$conn。を呼び出すときはnew DBUtil()、その入力パラメーターを提供していないため、カスタム コンストラクターではなく、デフォルト コンストラクターを呼び出している可能性があります。

$conn入力パラメーターをオプションにしたい場合は、 を試してください__construct($conn = null)

または、 として呼び出してみてくださいnew DBUtil(null)

于 2012-04-11T14:24:03.390 に答える
2
private function _constructor($conn)   ??

これであるべきか

private function __construct($conn)
于 2012-04-11T14:25:46.997 に答える
2

2 つのアンダースコア__( __construct) が必要です。

于 2012-04-11T14:38:43.303 に答える
-1

あなたはこのようにする必要があります:

class DBUtil {

        private static $instance;

        private function _construct(){
            $this->$instance = new mysqli("localhost", "root", "toor", "testdb");
        }

        public static function getInstance(){
            if(!isset(self::$instance){
                try{
                    self::$instance = new DBUtil();
                }catch(Exception $ex){
                    throw new Exception("Unable to create DB Instance");
                }
            }

            return self::$instance;
        }
于 2012-04-11T14:28:22.150 に答える