• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

php 魔术方法 __sleep __wakeup __toString __debuginfo

php 搞代码 3年前 (2022-01-23) 44次浏览 已收录 0个评论

__sleep():

使用serialize()序列化的时候,会检测类中是否有__sleep()魔术方法,有的话会先调用__sleep(),返回一个包含对象中所有需要序列化的变量名称的数组

<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()

使用serialize()序列化的时候,会检测类中是否有__wakeup()魔术方法,有的话会先调用__wakeup(),执行一些初始化操作

<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></code>

__toString()

__toString()用于一个类被当做字符串使用时的回应,只能返回一个字符串

<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() 是php5.6增加的特性,var_dump()一个类时的回应,返回一个包含对象属性的数组

<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]=> strin<div>本文来*源gaodai^.ma#com搞#代!码网</div><pre>搞gaodaima代码

g(4) “name” }

‘).addClass(‘pre-numbering’).hide(); $(this).addClass(‘has-numbering’).parent().append($numbering); for (i = 1; i <= lines; i++) { $numbering.append($('

  • ‘).text(i)); }; $numbering.fadeIn(1700); }); }); </script>

    以上就介绍了php 魔术方法 __sleep __wakeup __toString __debuginfo,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。


    搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
    转载请注明原文链接:php 魔术方法 __sleep __wakeup __toString __debuginfo

    喜欢 (0)
    [搞代码]
    分享 (0)
  • 发表我的评论
    取消评论

    表情 贴图 加粗 删除线 居中 斜体 签到

    Hi,您需要填写昵称和邮箱!

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址