copy() public method

public copy ( )
Esempio n. 1
0
 public function testCopy()
 {
     $str = 'prototype';
     $object1 = new ConcretePrototype($str);
     $this->assertEquals($str, $object1->getName());
     $object2 = $object1->copy();
     $this->assertEquals($str, $object2->getName());
 }
Esempio n. 2
0
 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();