示例#1
0
abstract class Prototype
{
    private $_id = null;
    public function __construct($id)
    {
        $this->_id = $id;
    }
    public function getId()
    {
        return $this->_id;
    }
    public function __clone()
    {
        //magic function
        $this->_id += 1;
    }
    public function getClone()
    {
        return clone $this;
    }
}
class ConcretePrototype extends Prototype
{
}
$objPrototype = new ConcretePrototype(0);
$objPrototype1 = clone $objPrototype;
echo $objPrototype1->getId() . "\n";
$objPrototype2 = $objPrototype;
echo $objPrototype2->getId() . "\n";
$objPrototype3 = $objPrototype->getClone();
echo $objPrototype3->getId() . "\n";