php中类的构造函数和析构函数,php面向对象-构造函数和析构函数详解

php面向对象中构造函数(__construnct)和析构函数详解(__destruct)

//在实际运用中构造函数的作用可以用来给属相初始化值,或初始化操作,话不啰嗦,例子更能形象说明:

class homan{

public function __construct(){

echo "生成对象时系统自动调用__construct";

}

}

$object = new homan;//这里会自动输出这些内容:生成对象时系统自动调用__construct,因为在对一个类实例化时,系统会自动调用构造函数

class homan{

public $name = null;

public $age = null;

public function __construct($name, $age){

$this -> name = $name;

$this -> age = $age;

}

}

$object = new homan("张xxx","28");

echo $object->name;//输出:张xxx

echo $object->age;//输出:28;

//因为在生成对象时,系统就会去自动调用类中的construct构造函数,并传递了两个参数,为属性进行初始化赋值

//构造函数调用父类的构造函数

class god extends homan{

public $gender = "男";

public function __construct(){

parent::__construct();

}

}

//php中的子类不会自动调用父类的构造函数,需要我们自己去触发父类的构造函数,否则父类的构造函数在子类中会被覆盖!

//destruct析构函数详解

//destruct析构函数在实际应用中,多数用于在对象销毁和数据库连接完毕之后自动关闭资源

class destruct()}{

public function __destruct(){

echo "调用__destruct";

}

}

$a = new destruct();

$d = $c = $b = $a;

unset($a);

echo "


";

//疑问:这里输出调用__destruct执行几次""?执行时字符串分别输出的位置?

答:这里调用__destruct一次,在echo "
"的后面调用.

疑问:这里可能很多初学者就会感到疑惑,__destruct不是在一个对象销毁时就自动调用吗,我unset($a)的时候为什么没调用呢.

答:对象的传值方式默认是引用传递的,$d = $c = $b = $a;他们指向的是内存中的同一个对象,你unset($a)的时候,内存中的对象并没有销毁,还有另外几个指向这个对象,只有当你把指向内存中这个对象的变量全部unset掉这个对象才会被销毁:比如unset($a),unset($b),unset($c),$unset(d),

//问题一:

$a = new destruct();

$d = $c = $b = $a;

unset($a);

$b = false;

$c = false;

$d = true;

echo "


";

//这里会调用几次__destruct()函数,分别指出调用的位置,比如:之前输出几次,之后输出几次

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值