<!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');