PHP学习笔记第【18】天(2014.11.25)——构造函数与析构函数

构造和析构

构造方法和析构方法

构造方法

实例化对象


在得到对象时,几乎都需要,对对象属性进行初始化,而且都是一样的操作,在一个操作中完成初始化,然后对该方法进行多次调用!

 

调用该方法初始化:

<?php
class BaseClass {
   function __construct() {
       print "In BaseClass constructor\n";
   }
}

class SubClass extends BaseClass {
   function __construct() {
       parent::__construct();
       print "In SubClass constructor\n";
   }
}

class OtherSubClass extends BaseClass {
    // inherits BaseClass's constructor
}

// In BaseClass constructor
$obj = new BaseClass();

// In BaseClass constructor
// In SubClass constructor
$obj = new SubClass();

// In BaseClass constructor
$obj = new OtherSubClass();
?>

 

 

再前进一步:

是否可以在实例化后,自动调用该初始化的方法!

Phpoop机制,在new完成时,会试着调用一个叫做 __construct()的方法。如果我们将初始化的代码,写到这个方法内,就可以完成自动初始化!

 

该方法,在通过类实例化对象,也叫构造对象时,被自动调用的,常常用于初始化对象,这个方法被叫做 构造方法:(此方法,就是比普通方法多了一个自动调用的功能)

 

由于不用去调用这个构造方法,如何传参?

在实例化时,通过在类名后,增加实参列表的形式,为构造方法传参:

 

 此时,需要注意,实例化时,类名后,可以增加括号,取决于,该对象的构造方法,是否需要参数,如果不需要,则可以省略,或者是一个空括号。 如果需要则一定要有括号,括号内是实参列表:

 

 

需要:

 

 

 

构造方法的兼容性问题:

PHP5,构造方法的名字,就是__construct()。在php5之前,构造方法名字为与类同名。为了兼容,也同时支持这个与类同名的构造方法:

 

 

如果同时出现,如何处理?

__construct(),后 Student

找,__construct

Student(),后 __construct

__construct,有一个不标准的错误提示

 

 

下面的写法比较常见:

 

 

 

析构方法

在对象消失(对象被销毁时),也会自动执行一个方法,称之为析构方法!

析构方法名字为 __destruct();

也会自动被调用!

 

该方法,用于释放对象所占用的额外资源,不是对象本身的内存空间!

 

 

 

什么情况下,对象会被销毁:

1, 脚本周期结束,自动销毁,几个对象销毁几次。

2, 销毁保存该对象的变量时:

 

3, 保存对象的变量,被赋值了其他数据。

 

任何新值都可以,甚至是原来类的新对象。都会导致原对象被销毁!

 

常见是使用null,表示销毁对象的含义!

$stu = null;


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值