<!DOCTYPE html>
<meta charset="utf-8">
<?php
require_once 'ItemManager.php';
require_once 'DeepCopyItem.php';
require_once 'ShallowCopyItem.php';
function testCopy(ItemManager $manager, $id)
{
$item1 = $manager->create($id);
$item2 = $manager->create($id);
$item2->getDetail()->comment = 'コメントを書き換えました。';
echo '■オリジナル';
$item1->dumpData();
echo '■コピー';
$item2->dumpData();
echo '<hr />';
}
$manager = new ItemManager();
$detail1 = new stdClass();
$detail1->comment = '商品001のコメントです。';
$detail2 = new stdClass();
$detail2->comment = '商品002のコメントです。';
//DeepCopyなのでコピー先を書き換えるとコピー元にも反映される
$item = new DeepCopyItem('001', '限定Tシャツ', 3800);
$item->setDetail($detail1);
$manager->registItem($item);
//ShallowCopyなのでコピー先を書き換えてもコピー元には反映されない
$item = new ShallowCopyItem('002', 'ぬいぐるみ', 1500);
$item->setDetail($detail1);
$manager->registItem($item);
testCopy($manager, '001');
testCopy($manager, '002');