Home >Backend Development >PHP Tutorial >php magic method __sleep __wakeup __toString __debuginfo

php magic method __sleep __wakeup __toString __debuginfo

WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWB
WBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOYWBOriginal
2016-07-29 09:07:241164browse

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

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn