PHP Magic Method __clone __tostring (v)

Source: Internet
Author: User

__clone ()-Automatically load this method when the object is cloned

__tostring ()-Automatically loads this method when an object needs an echo print output

__clone ()

<?phpclass example{public    static $PA;    public $PB;    Public Function __construct () {        $this->PB = ++self:: $pa;    }        Public Function __clone () {        $this->PB = ' no Zuo no die ';    }} $a = new example; $b = new example; $c = Clone $b; $b->pb = ' I love your so much! '; echo $a->pb;echo ' 

The results are as follows

1------------------------------------------------------------------------------------I Love much! ------------------------------------------------------------------------------------No Zuo no die/* if there is __ Clone () This magic method, the result of this side should be 2*/-------------------------------------------------------------------------------- ----I Love much!

The PHP manual gives us an example that is somewhat difficult to read, as follows

<?phpclass subobject{    static $instances = 0;    public $instance;    Public Function __construct () {        $this->instance = ++self:: $instances;    }    Public Function __clone () {        $this->instance = ++self:: $instances;    }} Class mycloneable{public    $object 1;    Public $object 2;    function __clone ()    {              //forces a copy of This->object, otherwise it still points to the same object        $this->object1 = Clone $this Object1;}    } $obj = new Mycloneable (), $obj->object1 = new Subobject (), $obj->object2 = new Subobject (), $obj 2 = Clone $obj;p rint ("O Riginal object:\n ");p Rint_r ($obj);p rint (" Cloned object:\n ");p Rint_r ($obj 2);? >

The final result

OriginalObject: MycloneableObject([Object1]= SubobjectObject([instance]=1) [Object2]= SubobjectObject([instance]=2)) ClonedObject: MycloneableObject([Object1]= SubobjectObject([instance]=3/ * may be more difficult to understand here, in fact, $obj2 when cloning the final instance as 2 of the result of cloning, and then execute the Subobject::__clone method *  /) [Object2]= SubobjectObject([instance]=2        ))

__tostring ()

<?php//Declare A simple classclass testclass{public    $foo;    Public function __construct ($foo)     {        $this->foo = $foo;    }    Public Function __tostring () {        return $this->foo;    }} $class = new TestClass (' Hello '); Echo $class;? >

Results

Hello

PHP Magic Method __clone __tostring (v)

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.