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

php 析构函数的问题?

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

请教一下php 析构函数的问题

<?phpclass a{static $ss=null;function ff($p){self::$ss=$p;return self::$ss;}function destruct(){echo "一二三";}}$rrrr=new a();echo $rrrr->ff(4444);$aaaa=new a();echo $aaaa->ff(55555);

========================
输出结果: 444455555一二三一二三
======================

我想请教的是,析构函数不是对象销毁后执行的吗,当对象$rrrr执行后,执行$aaaa的时候$rrrr这个对象应该已经销毁了啊,这个销毁后 应该输出析构函数的"一二三" 可是我们看到的结果是,444455555一二三一二三,我觉得,结果应该是4444一二三55555一二三,这样才对的嘛

不是这样的。unset($rrrr)也许能触发对象析构,但是new a()并不会触发哦。你只是获取了两个a的实例,并没有进行过析构的。

页面访问结束后php自动析构实例$rrrr和$aaaa,所以连续输出两次一二三。

谢谢,可是这个是单例模式
static $ss这个类变量重新赋值时,以前的不是就要销毁吗

亲,你这个不是单件模式…只是一个带有静态属性的普通对象而已,而且就算是单件模式也不会用到析构的。学程序要非常仔细啊,细节太重要了。这个才是单件

class singleDemo {    protected static $instance = false;<p>+本文来源gao!%daima.com搞$代*!码9网(</p><strong>搞gaodaima代码</strong>    protected construct() {        }    public static function getInstance() {        if (! self::$instance instanceof self) {            self::$instance = new self();        }        return self::$instance;    }}

单件,是指你只能操作相同的实例。讲这个需要太多话了,既然你知道单件模式那就直接去看那个的说明好了

析构函数是在对象销毁时调用的代码。
当这个对象用完之后,会自动执行这个函数中的语句。
你的这个对象对于整个文件来说还没有用完,只有到输出55555后才是真的用完,因为调用了2次,所以后面有两个一二三!望采纳!

以上就是php 析构函数的问题?的详细内容,更多请关注搞代码gaodaima其它相关文章!


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

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

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

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

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