3

もともと、私の意図は、設定を定数として格納するクラス(オブジェクト指向)を作成することです。たとえば、PHPの場合:

class Settings{
     const test = 'foobar!';
}

しかし後で、このアプローチでは管理者ユーザーがこれらの設定を変更することはできないと思います。変更する必要のない設定のみを定数として宣言し、他の設定はプライベート変数として宣言する必要があるようです。アプリケーションは、最初にデータベースの設定テーブルで設定が使用可能かどうかを確認します。使用できない場合は、デフォルトを使用します。 get()から、Settingsクラスで定義されたset()関数。それは良いアプローチですか?最善のアプローチは何ですか?この問題に関するアドバイスに感謝します。

4

4 に答える 4

4

私はあなたのメソッドに似ていますが、ゲッターとセッターでプライベート静的プロパティkey=>value配列を使用することを好みます。そうすれば、後でそれらをファイルまたはデータベースに結び付けることができます。

$value = Classname::getparam('configsetting');
Classname::setparam('configsetting', $newvalue);

get / set param mehods public staticを作成することを忘れないでください!

これがフルクラスのようになります...

class Classname{
    private static  $params = null;  

    public static function getparam($key){
        if(is_null(self::$params){
             self::$params = array();
             //initialize param array here from file, db, or just hardcoded values...
        }
        return isset(self::$params[$key])?self::$params[$key]:null;
     }

    public static function setparam($key, $value){
        if(is_null(self::$params){
             self::$params = array();
             //initialize array here
        }
        self::$params[$key] = $value;
     }
 } 
于 2012-05-01T13:14:07.410 に答える
1

正解::あなたの方法は問題ありません。

設定を変更するかどうかによっては、mysqlストレージを調べたり、設定をファイルに保存したりすることもできますが、変更しない場合は、問題がなければメソッドは問題ありません。

于 2012-05-01T04:34:49.303 に答える
0

YAMLなどの形式の構成ファイルの使用を検討することをお勧めします。

于 2012-05-01T04:30:21.243 に答える
0

私は通常、変更する必要のない設定値を一定として保持し、変更オプションを持つ他の設定をデータベース(ゲッター/セッター)に保持します。次に、リクエストごとにデータベースにアクセスする必要がないように、データを長期間キャッシュします。管理者が設定を変更すると、キャッシュは無効になり、新しい値がキャッシュに保存されます。

設定データをXMLファイルに保存する別のアプローチがあります。データベースに保存するのと比較して、XMLファイルに設定データを保存することの利点は何ですか?

于 2012-05-01T14:58:12.397 に答える