プラグインデータ

プラグイン | -

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というsb::Data::Objectを継承したSerene Bachのデータオブジェクトです。

sb::Data::Pluginには以下のようなフィールドがあります。

  • data
  • text
  • setting
  • date
  • url
  • mail
  • extra

他にid, wid, nameというフィールドがありますが、これらはシステムで利用されるフィールドで通常プラグイン側で利用することはありません。

data, textなどのように便宜的に汎用的な名称が付けられていますが、各フィールドの中身自体はurlmailを除き、特別な処理は行われていませんので、プラグイン側で自由に定義してご利用いただけます。

# urlmailは出力時に簡単なアドレスチェックを行います。無効なurl・無効なメールアドレスが指定された場合には空出力されます。ですから、urlmailのフィールドはアドレスチェッカとして利用することができます。

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つ方法があります。

  1. プラグインAPIを利用する
  2. 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でデータ更新処理を行うことを強く推奨します。

    2007.05.25 Friday | comments (0) | trackbacks (0)

    comments

    comment form

    trackbacks

    trackback url