public function testCopy() { $str = 'prototype'; $object1 = new ConcretePrototype($str); $this->assertEquals($str, $object1->getName()); $object2 = $object1->copy(); $this->assertEquals($str, $object2->getName()); }
public static function main() { $demo = new Demo(); $demo->array = array(1, 2); $obj1 = new ConcretePrototype($demo); $obj2 = $obj1->copy(); var_dump($obj1->getName()); var_dump($obj2->getName()); $demo->array = array(3, 4); var_dump($obj1->getName()); var_dump($obj2->getName()); var_dump($obj1 == $obj2); }
<?php interface Prototype { public function copy(); } class ConcretePrototype implements Prototype { private $_name; public function __construct($name) { $this->_name = $name; } public function copy() { return clone $this; } } class Demo { } // client $demo = new Demo(); $object1 = new ConcretePrototype($demo); $object2 = $object1->copy();