PHP Magic Method: __clone __tostring

Source: Internet
Author: User
Tags php tutorial
From the later version of PHP5, the class will be able to use the Magic method. PHP rules to start with two underscore (__) methods are preserved as a magic method, it is recommended that the function name is best not to start without __, unless it is to reload the existing magic method.

At present, PHP has a magic method has __construct,__destruct,__call,__get,__set,__isset,__unset,__sleep,__wakeup,__tostring,__set_state and __clone.

Let's take a look at two magic methods:__clone () and __tostring ().

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

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

__clone ()

 
  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 '
 
  ' Echo $b->pb;echo '
 
  ' Echo $c->pb;echo '
 
  '; echo $b->PB;? >

The results are as follows

1 ------------------------------------------------------------------------------------------ ---------------------------------------------------------------------------------------------------- -------------------------------------------------------------- I Love much!

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

 
  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

Object Object (Object  (            1  )          Object (            2objectobject  (      Object  (            /* may be more difficult to understand here, in fact, it is $obj2 when cloning the final instance as 2 of the result of cloning, and then execute the Subobject::__clone method */  )    Object  (            2  ))

__tostring ()

 
  foo = $foo;    }    Public Function __tostring () {        return $this->foo;    }} $class = new TestClass (' Hello '); Echo $class;? >

Results

Hello

The above describes the PHP magic method: __clone __tostring, including the PHP magic method of content, I hope that the PHP tutorial interested in a friend helpful.

  • 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.