sql >> データベース >  >> RDS >> Mysql

クラス外の任意の関数からアクセスできる静的データベースクラスを構築しようとしています

    クラスを静的に動作させるには、いくつかのことを行う必要があります。

    まず、接続を静的にします。例:

    private static $connection;
    

    第二に、なぜすべての下線が必要なのですか?

    define('DB_HOST', 'localhost');
    define('DB_NAME', 'your_db_name');
    define('DB_USER', 'username');
    define('DB_PASS', 'password');
    

    また、なぜクラス定数を使用するのですか?すでに定義した定数を使用するだけです。

    第三に、コンストラクターを失います。このクラスのインスタンスをおよび作成することは期待できません。 静的に使用してください。接続には遅延読み込みアプローチを採用します

    private static function getConnection() {
        if (self::$connection === null) {
            $dsn = sprintf('mysql:host=%s;dbname=%s;charset=utf8',
                DB_HOST, DB_NAME);
    
            self::$connection = new PDO($dsn, DB_USER, DB_PASS, array(
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_EMULATE_PREPARES => false,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC
            ));
        }
        return self::$connection;
    }
    

    次に、パブリックメソッドはこのメソッドを内部的に呼び出します。 dbDataArrayも具体化します 連想配列を返す方法を示すメソッド

    public static function dbDataArray($query, $params = array()) {
        $stmt = self::getConnection()->prepare($query);
        $stmt->execute($params);
        return $stmt->fetchAll();
    }
    



    1. 新機能の紹介-SpotlightCloudレポート

    2. 文字列がランダムに見えるか、人間が生成して発音できるかを確認する方法は?

    3. MySQLデータベースの問題をトラブルシューティングする方法

    4. mysqlに複数の行を挿入する