<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="php中代码说明：__destruct与register_shutdown_function执行的先后顺序问题" id="card1">
<p> 游客</p><p>
标题:php中代码说明：__destruct与register_shutdown_function执行的先后顺序问题<br/>
正文:<br/>
根据php手册的解析。__destruct是析构函数会在到某个对象的所有引用都被删除或者当对象被显式销毁时执行。而register_shutdown_function是Registers a callback to be executed after script execution finishes or exit() is called. 注册一个回调函数，此函数在脚本运行完毕或调用exit()时执行。从字面上理解，__destruct是对象层面的，而register_shutdown_function是整个脚本层面的，理应register_shutdown_function的级别更高，其所注册的函数也应最后执行。为证实我们的猜测，我们写一段脚本：代码如下: register_shutdown_function(function(){echo 'global';});     class A {         public function __construct(){         }         public function __destruct()         {             echo __class__,'::',__function__,'&amp;lt;br/&amp;gt;';         }     }     new A;执行结果：代码如下: A::__destruct  global完全证实了我们的猜测，它按照对象-&amp;gt;脚本的顺序被执行了。但如果我们在对象中注册了register_shutdown_function呢？它还是一样的顺序吗？！代码如下: class A {  &amp;<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1885&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1885&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1885&amp;Page=2">[2]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1885&amp;Page=3">[3]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=1885&amp;Page=8">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=1885">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=1885">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>