<?xml version='1.0' encoding='utf-8'?>
<pod xmlns="http://axkit.org/ns/2000/pod2xml">
<head>
	<title>PHP::Session - PHPセッションファイルの読み書き</title>
</head>
<sect1>
<title>SYNOPSIS</title>
<verbatim><![CDATA[
use PHP::Session;
]]></verbatim>
<verbatim><![CDATA[
my $session = PHP::Session->new($id);
]]></verbatim>
<verbatim><![CDATA[
# session id
my $id = $session->id;
]]></verbatim>
<verbatim><![CDATA[
# セッションデータの get/set
my $foo = $session->get('foo');
$session->set(bar => $bar);
]]></verbatim>
<verbatim><![CDATA[
# セッションデータの削除
$session->unregister('foo');
]]></verbatim>
<verbatim><![CDATA[
# すべてのセッションデータを削除
$session->unset;
]]></verbatim>
<verbatim><![CDATA[
# データが登録されているかチェック
$session->is_registered('bar');
]]></verbatim>
<verbatim><![CDATA[
# セッションデータを保存
$session->save;
]]></verbatim>
<verbatim><![CDATA[
# セッションを破壊
$session->destroy;
]]></verbatim>
<verbatim><![CDATA[
# もし存在しなければ、セッションファイルを生成する
$session = PHP::Session->new($new_sid, { create => 1 });
]]></verbatim>
</sect1>
<sect1>
<title>DESCRIPTION</title>
<para>
PHP::Session を使用するとPHP4のセッションファイルを読み書きすることが
でき、PerlアプリケーションのセッションをPHP4と共有することができます。
</para>
<para>
セッション管理に Apache::Session のインタフェースを使用したい場合には、
Apache::Session::PHP を使用すると、このモジュールと Apache::Session の
橋渡しをうまくやってくれます。
</para>
</sect1>
<sect1>
<title>OPTIONS</title>
<para>
コンストラクタ <code>new</code> にはハッシュリファレンスでオプションを渡せます。
</para>
<list>
<item><itemtext>save_path</itemtext>
<para>
セッションファイルが保持されるディレクトリパス。デフォルトは <code>/tmp</code>。
</para>
</item>
<item><itemtext>serialize_handler</itemtext>
<para>
シリアライズハンドラのタイプ。現在サポートされているのはPHPデフォルト
シリアライズハンドラのみ。
</para>
</item>
<item><itemtext>create</itemtext>
<para>
存在しない場合にセッションファイルを生成するか。デフォルトは0。
</para>
</item>
<item><itemtext>auto_save</itemtext>
<para>
変更をセッションファイルに自動的に保存するか。デフォルトは0。
</para>
<para>
以下のような場合に:
</para>
<verbatim><![CDATA[
my $session = PHP::Session->new($sid, { auto_save => 1 });
$session->param(foo => 'bar');
]]></verbatim>
<verbatim><![CDATA[
# あーっと save() メソッドを忘れてる!
]]></verbatim>
<para>
<code>auto_save</code> を真の値にしておけば、パラメータを変更した後に <code>save</code>メ
ソッドを呼び忘れても、セッションオブジェクトがスコープ外に消えるときに、
このモジュールが自動的にセッションファイルに保存します。
</para>
<para>
0にしておいた場合(デフォルト)、かつ warnings がオンの場合には、以下の
ような警告を発生させます:
</para>
<verbatim><![CDATA[
PHP::Session: some keys are changed but not modified.
]]></verbatim>
</item>
</list>
</sect1>
<sect1>
<title>NOTES</title>
<list>
<item><para>
PHP の配列は Perl のハッシュになります。
</para>
</item>
<item><para>
PHP でのオブジェクトは PHP::Session::Object (空のクラス) に bless され
たオブジェクトとなり、元のクラス名は <code>_class</code> というキーに保持されま
す。
</para>
</item>
<item><para>
データを save() するときのロックは排他的な <code>flock</code> にて行われます。こ
れは PHP の実装と同じです。
</para>
</item>
<item><para>
十分なテストはおこなっていませんので、シリアライゼーションまわりでバグ
があるかもしれません。もし見つけたらemailで教えてください。
</para>
</item>
</list>
</sect1>
<sect1>
<title>TODO</title>
<list>
<item><para>
WDDX.pm を使用して WDDX をサポートする。
</para>
</item>
</list>
</sect1>
<sect1>
<title>AUTHOR</title>
<para>
Tatsuhiko Miyagawa &lt;miyagawa@bulknews.net&gt;
</para>
<para>
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
</para>
</sect1>
<sect1>
<title>SEE ALSO</title>
<para>
<link xref='Apache::Session::PHP'>Apache::Session::PHP</link>, <link xref='WDDX'>WDDX</link>, <link xref='Apache::Session'>Apache::Session</link>, <link xref='CGI::kSession'>CGI::kSession</link>
</para>
</sect1>
</pod>
