<?xml version="1.0" encoding="UTF-8"?>
<!-- Reviewed: no -->
<!-- EN-Revision: 24249 -->
<sect1 id="zend.serializer.introduction">
    <title>導入</title>

    <para>
        <classname>Zend_Serializer</classname> はさまざまな機関による保存可能な
        <acronym>PHP</acronym> 型表現の簡潔な生成と回復のインターフェイスに基づく
        アダプターを提供します。
    </para>

    <example id="zend.serializer.introduction.example.dynamic">
        <title>Zend_Serializer の動的なインターフェイスの使用</title>

        <para>
            シリアライザーをインスタンス化するにはアダプター名に基づいたファクトリーメソッド
            を使用しなければなりません:
        </para>

        <programlisting language="php"><![CDATA[
$serializer = Zend_Serializer::factory('PhpSerialize');
// この時 $serializer は Zend_Serializer_Adapter_AdapterInterface のインスタンスです,
// すなわち Zend_Serializer_Adapter_PhpSerialize です

try {
    $serialized = $serializer->serialize($data);
    // この時 $serialized は文字列です

    $unserialized = $serializer->unserialize($serialized);
    // now $data == $unserialized
} catch (Zend_Serializer_Exception $e) {
    echo $e;
}
]]></programlisting>
    </example>

    <para>
        <methodname>serialize()</methodname> メソッドは 保存できる文字列を生成します。
        再生成するにはシリアライズされたデータ <methodname>unserialize()</methodname>メソッドを簡単にコールできます。
    </para>

    <para>
        シリアル化またはアンシリアライズにてエラーに遭遇した際は常に
        <classname>Zend_Serializer</classname> は
        <classname>Zend_Serializer_Exception</classname> をスローします。
    </para>

    <para>
        特定されたシリアライザーアダプターの設定をするために、配列か <classname>Zend_Config</classname> 
        を <methodname>factory</methodname> か <methodname>serialize()</methodname> 
        と <methodname>unserialize()</methodname> メソッドに任意に追加できます:
    </para>

    <programlisting language="php"><![CDATA[
$serializer = Zend_Serializer::factory('Wddx', array(
    'comment' => 'serialized by Zend_Serializer',
));

try {
    $serialized = $serializer->serialize(
        $data,
        array('comment' => 'change comment')
    );

    $unserialized = $serializer->unserialize(
        $serialized,
        array(/* options for unserialize */)
    );
} catch (Zend_Serializer_Exception $e) {
    echo $e;
}
]]></programlisting>

    <para>
        <methodname>factory()</methodname>に与えらえたオプションはインスタンス化されたオブジェクトにとって妥当なものです。
        <methodname>setOption(s)</methodname>メソッドを用いてこれらのオプションを
        変更できます。単発の呼び出しだけをするために一つか
        それ以上の変更をするには、<methodname>serialize()</methodname> または 
        <methodname>unserialize()</methodname> を第二引数として渡します。
    </para>

    <example id="zend.serializer.introduction.example.static.php">
        <title>Zend_Serializer の静的なインターフェイスの使用</title>

        <para>
            <classname>Zend_Serializer</classname>とともに使用するのに特別なシリアライザーを標準のシリアル化
            アダプターとして登録できます。デフォルトでは <classname>PhpSerialize</classname> アダプターが
            登録されているでしょうが、静的メソッド <methodname>setDefaultAdapter()</methodname>
            を使用してこのオプションを変更できます。
        </para>

        <programlisting language="php"><![CDATA[
Zend_Serializer::setDefaultAdapter('PhpSerialize', $options);
// or
$serializer = Zend_Serializer::factory('PhpSerialize', $options);
Zend_Serializer::setDefaultAdapter($serializer);

try {
    $serialized   = Zend_Serializer::serialize($data, $options);
    $unserialized = Zend_Serializer::unserialize($serialized, $options);
} catch (Zend_Serializer_Exception $e) {
    echo $e;
}
]]></programlisting>
    </example>
</sect1>
<!--
vim:se ts=4 sw=4 et:
-->