Home >Backend Development >PHP Tutorial >php magic method __sleep __wakeup __toString __debuginfo
__sleep():
When using serialize() for serialization, it will detect whether there is a __sleep() magic method in the class. If so, it will call __sleep() first and return an object containing all the objects that need to be serialized. An array of variable names
<code><span><?php</span><span><span>class</span><span>test</span>{</span><span>public</span><span>$name</span>=<span>'demon'</span>; <span>private</span><span>$age</span>=<span>'19'</span>; <span>public</span><span><span>function</span><span>__sleep</span><span>()</span>{</span><span>return</span> [<span>'name'</span>]; } } <span>$test</span> = <span>new</span> test(); <span>echo</span> serialize(<span>$test</span>); <span>//输出结果:O:4:"test":1:{s:4:"name";s:5:"demon";}</span></code>
__wakeup()
When serializing using serialize(), it will detect whether there is a __wakeup() magic method in the class. If so, it will call __wakeup() first to perform some initialization operations.
<code><span><?php</span><span><span>class</span><span>test</span>{</span><span>public</span><span>$name</span>=<span>'demon'</span>; <span>private</span><span>$age</span>=<span>'19'</span>; <span>public</span><span><span>function</span><span>say</span><span>()</span>{</span><span>echo</span><span>"反序列化"</span>; } <span>public</span><span><span>function</span><span>__wakeup</span><span>()</span>{</span><span>$this</span>->say(); } } <span>$test</span> = <span>new</span> test(); unserialize(serialize(<span>$test</span>)); <span>//输出结果:反序列化</span></span></code>
__toString()
__toString() is used as a response when a class is used as a string. It can only return a string
<code><span><?php</span><span><span>class</span><span>test</span>{</span><span>public</span><span>$name</span>=<span>'demon'</span>; <span>private</span><span>$age</span>=<span>'19'</span>; <span>public</span><span><span>function</span><span>__toString</span><span>()</span>{</span><span>return</span><span>'test'</span>; } } <span>$test</span> = <span>new</span> test(); <span>echo</span><span>$test</span>; <span>//输出结果:test</span></code>
__debuginfo()
__debuginfo() is a feature added in php5.6, var_dump ()A response to a class, returns an array containing object attributes
<code><span><?php</span><span><span>class</span><span>test</span>{</span><span>public</span><span>$name</span>=<span>'demon'</span>; <span>private</span><span>$age</span>=<span>'19'</span>; <span>public</span><span><span>function</span><span>__debuginfo</span><span>()</span>{</span><span>return</span> [<span>'name'</span>]; } } <span>$test</span> = <span>new</span> test(); var_dump(<span>$test</span>); <span>//输出结果:object(test)#1 (1) { [0]=> string(4) "name" }</span></code>').addClass('pre-numbering').hide(); $(this).addClass('has-numbering').parent().append($numbering); for (i = 1; i ').text(i)); }; $numbering.fadeIn(1700); }); });
The above introduces the PHP magic methods __sleep __wakeup __toString __debuginfo, including the relevant content. I hope it will be helpful to friends who are interested in PHP tutorials.