プリファレンスを使用するには、まずプリファレンスオブジェクトを生成します。
create()スタティックメソッドには、引数としてSabel_Configインタフェイスを実装したクラスを渡すことができます。
この設定により、バックエンドの切り替えや、オプションを指定します。
設定を渡さなかった場合には、デフォルトとしてXMLバックエンドが使われ、RUN_BASE/data/preferences/default.xmlに設定が書き込まれます。
$preference = Sabel_Preference::create();
下記のコードで簡単な使用例を示します。
$preference->setInt("timeout", 1);
echo $preference->getInt("timeout"); // output: 1
echo $preference->delete("timeout"); // output: 1
echo $preference->getInt("timeout"); // exception
getInt()といったように、型の指定があります。
これは省略することはできず、型を明記することが必須となります。
存在しない設定を取得しようとすると例外が投げられます。
これをtry, cactchするのが煩わしい時は、下記のようにします。
$preference->->getInt("timeout", 1);
もしくは
if ($preference->contains("timeout")) {
$preference->->getInt("timeout", 1);
}
設定していない値を設定しつつ、その値を使用するには下記のようにします。
echo $preference->>getInt("timeout", 100); // output: 100
これでtimeoutとして100が設定され、同時に100を得ることができます。
既に設定が存在する場合は、100で上書きされることになるので注意が必要です。
Sabelの標準パッケージに含まれるバックエンドは、XML, データベース, Memcacheです。
これらのバックエンドに不足があれば、Sabel_Preference_Backendインタフェイスを実装して、独自のバックエンドを定義することも可能です。
XMLバックエンドでは、その名の通りXMLファイルを設定値保存先として使用します。
class Preference_Config implements Sabel_Config
{
public function configure()
{
$param = array("backend" => "Sabel_Preference_Xml",
"file" => "myapp");
}
}
データベースをバックエンドとして使用するには、migration/system/n_SblPreference_create.phpを使用して下さい。
このファイルはMySQLに特化していますので適切利用しているデータベースに合わせて編集します。
class Preference_Config implements Sabel_Config
{
public function configure()
{
$param = array("backend" => "Sabel_Preference_Database",
"namespace" => "myapp");
}
}
class Preference_Config implements Sabel_Config
{
public function configure()
{
$param = array("backend" => "Sabel_Preference_Memcache",
"namespace" => "myapp",
"server" => "memcached.example.com");
}
}
注意する点として、falseをセットするとバックエンドには0として保存されます。取得する時に型がbooleanとして定義されていればfalseが返されます。