PHP 5.0 Object Model Deep Exploration of object replication

Source: Internet
Author: User
Tags copy object model
Object models in Object PHP5 invoke objects by reference, but sometimes you might want to create a copy of an object and hope that changes to the original object do not affect the copy. For this purpose, PHP defines a special method called __clone. Like __construct and __destruct, there are two underscores in front.

By default, the __clone method creates an object that has the same properties and methods as the original object. If you want to change the default content during cloning, you will overwrite (attribute or method) in the __clone.

A cloned method can have no parameters, but it also contains this and that pointer (that points to the object being copied). If you choose to clone yourself, you have to be careful to replicate any information you want your object to contain, from that to this, and if you use __clone to replicate, PHP will not perform any implicit replication, and here is an example of automating an object with a series ordinal:

Class Objecttracker//Object Tracker
{
private static $nextSerial = 0;
Private $id;
Private $name;

function __construct ($name)//constructor
{
$this->name = $name;
$this->id = ++self:: $nextSerial;
}

function __clone ()//Clone
{
$this->name = "Clone of $this->name";
$this->id = ++self:: $nextSerial;
}

function getId ()//Get the value of the id attribute
{
Return ($this->id);
}

function GetName ()//Get the value of the Name property
{
Return ($this->name);
}
}

$ot = new Objecttracker ("Zeev ' s Object");
$ot 2 = Clone$ot;

Output: 1 Zeev ' s Object
Print ($ot->getid (). " " . $ot->getname (). "");

Output: 2 Clone of Zeev ' s Object
Print ($ot 2->getid (). " " . $ot 2->getname (). "");
? >

Related Article

Contact Us

The content source of this page is from Internet, which doesn't represent Alibaba Cloud's opinion; products and services mentioned on that page don't have any relationship with Alibaba Cloud. If the content of the page makes you feel confusing, please write us an email, we will handle the problem within 5 days after receiving your email.

If you find any instances of plagiarism from the community, please send an email to: info-contact@alibabacloud.com and provide relevant evidence. A staff member will contact you within 5 working days.

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.