プラグインデータ
Serene Bachではプラグイン毎に独立したデータをプラグインAPIを通して簡単に取り扱うことができます。
my $data = sb::Plugin->get_data; $data->data($cgi->value('topmemo')); $data->setting($cgi->value('topmemo_breaks')); $data->date($self->{'time'}); sb::Plugin->set_data('data'=>$data);
プラグインデータの実体は
というsb::Data::Plugin
を継承したSerene Bachのデータオブジェクトです。sb::Data::Object
には以下のようなフィールドがあります。sb::Data::Plugin
- data
- text
- setting
- date
- url
- extra
他に
, id
, wid
というフィールドがありますが、これらはシステムで利用されるフィールドで通常プラグイン側で利用することはありません。name
, data
などのように便宜的に汎用的な名称が付けられていますが、各フィールドの中身自体はtext
とurl
を除き、特別な処理は行われていませんので、プラグイン側で自由に定義してご利用いただけます。mail
#
とurl
は出力時に簡単なアドレスチェックを行います。無効なurl・無効なメールアドレスが指定された場合には空出力されます。ですから、mail
とurl
のフィールドはアドレスチェッカとして利用することができます。mail
によってデータオブジェクトを取得できます。上記例ではsb::Plugin->get_data
という変数にデータオブジェクトを格納(代入)しています。$data
取得したデータオブジェクトに対してフィールド名のアクセサ(入出力関数)が利用できます。Serene Bachのデータオブジェクトには入出力(set/get)を兼用したアクセサを利用します。
my $data = sb::Plugin->get_data; print $data->data; # 出力(get) : data フィールドの内容を取得 $data->data('new_data'); # 入力(set) : data フィールドに 'new_data' をセット
フィールドの内容を取得する時には基本的に引数は必要ありません(他のデータオブジェクトには出力時に引数を必要とするアクセサもあります)。
フィールドの内容を更新する際には更新したい内容を引数として同一名称のアクセサを呼び出します。
Serene Bachのデータオブジェクトはデータを更新してもそのままではファイル(データベース)には反映されません。
更新したデータオブジェクトの内容をファイル(データベース)に反映させるには2つ方法があります。
- プラグインAPIを利用する
- sb::Dataによってハンドリングする
上記例ではプラグインAPIを利用しています。
と対になるget_data
というメソッドを呼び出します。set_data
sb::Plugin->set_data('data'=>$data);
と異なり、get_data
という形の引数が必要になることに注意してください。'data'=>データオブジェクト
後者は
モジュールに用意されているsb::Data
メソッドを利用する方法です。update
sb::Data->update($data);
この方法で更新されたデータオブジェクト
をファイル(データベース)に反映させることができます。$data
ただし、通常プラグインデータを取り扱う際にはプラグインAPIを通した
でデータ更新処理を行うことを強く推奨します。sb::Plugin->set_data
comments
comment form