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

来源:互联网 发布:知想科技 编辑:程序博客网 时间:2024/05/17 03:23

构造和析构

构造方法和析构方法

构造方法

实例化对象


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

 

调用该方法初始化:

<?phpclass 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
原创粉丝点击