Current File : //usr/local/lib/php/test/XML_Serializer/tests/show_ScalarAsAttributes_usage.phpt
--TEST--
XML Serializer - show proper usages of SCALAR_AS_ATTRIBUTES option
--FILE--
<?php
require_once 'XML/Serializer.php';

$ser = &new XML_Serializer();


/**
 * all subtags under tagA will become attributes on tagA...
 * all subtags under tagB will become attributes on tagB...
 */
echo 'TEST:  SCALAR_AS_ATTRIBUTES set TRUE' . PHP_EOL;
$ser->setOption(XML_SERIALIZER_OPTION_SCALAR_AS_ATTRIBUTES, true);
$result = $ser->serialize(
    array(
        'tagA' => array(
            'tag2' => 2,
            'tag3' => 'hi'
        ),
        'tagB' => array(
            'tag4' => 4,
            'tag5' => 'bye'
        )
    )
);
echo $ser->getSerializedData() . PHP_EOL . PHP_EOL;


/**
 * all subtags under tagA will become attributes on tagA,
 * but subtags under tagB will remain as subtags.
 */
echo 'TEST:  SCALAR_AS_ATTRIBUTES set to array(\'tagA\' => true)' . PHP_EOL;
$ser->setOption(XML_SERIALIZER_OPTION_SCALAR_AS_ATTRIBUTES,
    array(
        'tagA' => true
    )
);
$result = $ser->serialize(
    array(
        'tagA' => array(
            'tag2' => 2,
            'tag3' => 'hi'
        ),
        'tagB' => array(
            'tag4' => 4,
            'tag5' => 'bye'
        )
    )
);
echo $ser->getSerializedData() . PHP_EOL . PHP_EOL;


/**
 * only subtag tag3 will become an attribute on tagA...
 * tag2 will remain a subtag under tagA...
 * nothing affects tagB... tag4 and tag5 remain subtags under it.
 */
echo 'TEST:  SCALAR_AS_ATTRIBUTES set to array(\'tagA\' => array(\'tag3\'))' . PHP_EOL;
$ser->setOption(XML_SERIALIZER_OPTION_SCALAR_AS_ATTRIBUTES,
    array(
        'tagA' => array('tag3')
    )
);
$result = $ser->serialize(
    array(
        'tagA' => array(
            'tag2' => 2,
            'tag3' => 'hi'
        ),
        'tagB' => array(
            'tag4' => 4,
            'tag5' => 'bye'
        )
    )
);
echo $ser->getSerializedData() . PHP_EOL . PHP_EOL;

?>
--EXPECT--
TEST:  SCALAR_AS_ATTRIBUTES set TRUE
<array>
<tagA tag2="2" tag3="hi" />
<tagB tag4="4" tag5="bye" />
</array>

TEST:  SCALAR_AS_ATTRIBUTES set to array('tagA' => true)
<array>
<tagA tag2="2" tag3="hi" />
<tagB>
<tag4>4</tag4>
<tag5>bye</tag5>
</tagB>
</array>

TEST:  SCALAR_AS_ATTRIBUTES set to array('tagA' => array('tag3'))
<array>
<tagA tag3="hi">
<tag2>2</tag2>
</tagA>
<tagB>
<tag4>4</tag4>
<tag5>bye</tag5>
</tagB>
</array>