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.