2012-05-01 18 views
3

私の意図は、設定を定数として保存するクラス(オブジェクト指向)を作成することです。たとえば、PHPで:ウェブサイトの設定を保存するベストプラクティス?

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

しかし、このアプローチでは、管理者ユーザーがこれらの設定を変更できないと思います。それは、不必要な変更が必要な設定だけを定数として宣言し、他をプライベート変数として宣言する必要があると思われる場合、アプリケーションはデータベース内で設定を使用できるかどうかを調べます。 Settingsクラスで定義されているget()、set()関数から取得します。 これは良いアプローチですか?最善のアプローチは何ですか?私はこの問題に関するあらゆるアドバイスを感謝します。

+0

本当に重要ですか? – Petah

+0

私の投票は、この質問が重要だと思います!あなたのサイトの設定をうまく管理するための、一貫した方法を検討しておく価値があります。私は世界中で定義されている多くのサイトで働いてきました...柔軟な言葉があるときは、設計の詳細を考える責任があります。 – Ray

答えて

3

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

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

get/set param mehodsを静的にするのを忘れないでください!

ここで(

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; 
    } 
} 
+1

があります。私はここで(Yiiのフレームワークに固有の)本当に良いリファレンスを見つけました:http://programmersnotes.info/2009/03/04/handling-application-parameters-in-yi-using-the-database/ しかし、私はあなたのアプローチに従います。 – Silentbang

0

YAMLなどの形式の構成ファイルを使用することを検討してください。

+0

+1良いリンクの場合 – diEcho

+0

YAML-configs構文解析用の非常に便利なツール(http://framework.zend.com/manual/en/zend.config.adapters.yaml.html) – mantigatos

1

ストレート答え::あなたの方法はすべて、そのすべての好みです。

設定が変更されるかどうかによって、mysqlストレージを調べたり、設定をファイルに保存したりすることができますが、変更しない場合は、お使いの方法は問題ありません。

0

私は通常、データベースへの変更オプションを持っているなど、一定およびその他の設定を変更する必要はない設定値を保つ...完全なクラスは次のようになりますだゲッター/セッター)。 それから私は長い時間のためにデータをキャッシュするので、リクエストごとにデータベースにアクセスする必要はありません。 adminが設定を変更すると、キャッシュは無効になり、新しい値がキャッシュに保存されます。

設定データをXMLファイルに保存する別の方法があります。誰でも、設定データをXMLファイルに格納する利点は、データベースに格納する利点と比べて、教えてください。

関連する問題