プリファレンスを使用する

概要

プリファレンスを使用するには、まずプリファレンスオブジェクトを生成します。
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で上書きされることになるので注意が必要です。

使用できる型

int
getInt, setInt
string
getString, setString
float
getFloat, setFloat
boolean
getBoolean, setBoolean
array
getArray, setArray
object
getObject, setObject

バックエンド

Sabelの標準パッケージに含まれるバックエンドは、XML, データベース, Memcacheです。
これらのバックエンドに不足があれば、Sabel_Preference_Backendインタフェイスを実装して、独自のバックエンドを定義することも可能です。

XML

XMLバックエンドでは、その名の通りXMLファイルを設定値保存先として使用します。

設定オプション

file
ファイル名を指定します。パスを指定するには、absoluteオプションをtrueにして下さい。
ファイル名に"."(ドット)が含まれなければ、自動的に .xml が使用されます。
パスが指定されていない場合には、 RUN_BASE/data/preferences が使用されます。
absolute
このオプションを指定すると、fileで指定されたパスは絶対パスとして扱われます。
セキュリティ上好ましくない場合があるので使用するときは注意して下さい。

設定例

class Preference_Config implements Sabel_Config
{
  public function configure()
  {
    $param = array("backend" => "Sabel_Preference_Xml",
                   "file"    => "myapp");
  }
}

データベース

データベースをバックエンドとして使用するには、migration/system/n_SblPreference_create.phpを使用して下さい。
このファイルはMySQLに特化していますので適切利用しているデータベースに合わせて編集します。

設定オプション

namespace
namespace 名前空間を指定します。このオプションを省略するとdefault名前空間が使用されます。
名前空間は、namespaceカラムの検索条件として利用されます。
model
バックエンドとのアクセスに使用するモデルクラスを指定します。
指定しなければSblPreferenceモデルが使用されます。

設定例

class Preference_Config implements Sabel_Config
{
  public function configure()
  {
    $param = array("backend"   => "Sabel_Preference_Database",
                   "namespace" => "myapp");
  }
}

Memcache

設定オプション

namespace
namespace 名前空間を指定します。このオプションを省略するとdefault名前空間が使用されます。
server
サーバを指定します。Memcachedが動作しているホストのIPアドレス、もしくは名前解決が可能なホスト名お指定して下さい。省略するとlocalhost(127.0.0.1)が使用されます。
port
ポート番号を指定します、省略すれば11211が使用されます。

設定例

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が返されます。