为了账号安全,请及时绑定邮箱和手机立即绑定

为什么加了echo“hello"后,hello会夹在二个词中间

<?php

class Car {

    function __construct(){

        print "构造";

    }

    function __destruct(){

        print "析构";

    }

    //增加构造函数与析构函数

}

$car = new Car();

echo "hello";

这样的结果是    “构造hello析构”  为什么不是"构造析构hello",有构造函数的类创建实例化对象后会直接调用,调用后会删除这个对象,这是析造函数会自动调用,那不是应该“构造跟析造”这二个词紧贴在一起的吗,为什么会“析造”会在hello的后面,请大神详解啊!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!

正在回答

3 回答

$car = new Car();

unset($car);// 手动解构

echo "hello";

应该是程序没有完结时这个对象还一直被占用吧

1 回复 有任何疑惑可以回复我~

<?php

class user{

    private static $count = 0 ; //记录所有用户的登录情况.

    public function __construct(){

        self::$count = self::$count + 1;

    }

    public function getCount(){    

      return self::$count;

    }

    public function __destruct(){

        self::$count = self::$count -1;

    }

}

$user1 = new user();

$user2 = new user();

$user3 = new user();

echo "now here have ".$user3->getCount()." user";

echo "<br>";

unset( $user3);

echo "now here have ".$user2->getCount()." user";

?>

结果是:

now here have 3 user
now here have 2 user

实例化三次所以调用构造函数三次结果是3,然后在unset显式销毁的时候会自动调用析构函数因此结果是2

1 回复 有任何疑惑可以回复我~

只有在页面代码全部执行完毕后php才会释放变量,然后调用析构函数,所以只有在echo"hello"执行完毕后才会调用,所以结果是"构造hello析构"

0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么加了echo“hello"后,hello会夹在二个词中间

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信