构造方法与析构方法

,,构造方法与析构方法是对象中的两个特殊方法,它们都与对象的生命周期有关。构造方法是对象创建完成后第一个被对象自动调用的方法,这也是我们在对象中使用构造方法的原因。而析构方法是对象在销毁之前最后一个被对象自动调用的方法,这也是我们在对象中使用析构方法的原因,所以通常使用构造方法完成一些对象的初始化工作,使用析构方法完成一些对象在销毁前的清理工作。

<强> 1,构造方法

<强>,,在类中声明构造方法的格式如下:

<强>函数__construct(参数列表){,,,//构造方法名称是以两个下划线开始的,,,,,,,,,,,,,,,,,,,,,,,,,,__construct()

<强>,,,//方法体,通常用来对成员属性进行初始化赋值

<强>}

& lt; ?php

类人{

//下面是声明人的成员属性,都是没有初值的,在创建对象时,使用构造方法赋初值

var美元名称;

var性美元;

var时代美元;


//声明一个构造方法,将来创建对象时,为对象的成员属性赋予初值,参数中都使用了默认参,,,,,,数

函数__construct (name=" ",性美元="男",$年龄=" 1 "){

$ this→名称=$名称;,,,//在创建对象时,使用传入的参数美元的名字为成员属性,,,,,,,,,,,,,,,,,,,,,,,,美元这→名称赋初值

这→美元=$性;,,,,//在创建对象时,使用传入的参数性为美元成员属性——美元,,,,,,,,,,,,,,,,,,,,,,在性赋初值

$ this→年龄=$年龄;,,,,//在创建对象时,使用传入的参数美元时代为成员属性——美元,,,,,,,,,,,,,,,,,,,,,,在时代赋初值

}

函数表示(){

回声”我的名字:“。$ this→名字。”;我的性别:“。$ this→性。”,我的年,,,,,,,,,,,,,,,,,龄:“。这→美元时代。”。你们;br/祝辞”;

}

函数运行(){

echo $ this→名称。“在走路& lt; br/祝辞”;

}

}


//下面三行中实例话人类的三个实例对象,并使用构造方法分别为新创建的成员属性赋予初值

$ person1=新人(“张三”,“男”、“40”);,,,,//创建对象person1美元时会自动执行构造方法,将全,,,,,,,,,,,,,,,,,,,,,,,,,部参数传给它

$ person2=新人(“李四”、“女”);,,,,//创建对象person1美元时会自动执行构造方法,传入前两个,,,,,,,,,,,,,,,,,,,,,,参数

$ person3=新人(“王”五);,,,,//创建对象person1美元时会自动执行构造方法,只传入一个参数


person1→美元说();

美元person1→运行();


person2→美元说();

美元person2→运行();


person3→美元说();

美元person3→运行();

?在

代码运行结果如下所示:

构造方法与析构方法


<强> 2,析构方法

<强>,,析构方法的声明格式与构造方法相似,在类中声明的析构方法名称也是固定的,也是以两个下划线开头的方法名“__destruct”,而且析构函数不能带有任何参数。在类中声明析构方法的格式如下:

<强>函数__destruct () {,,,,,//析构方法名称是以两个下划线开始的__destruct()

<强>,,,//方法体,通常用来完成一些在对象销毁前的清理任务

<强>}

& lt; ?php

类人{

var美元名称;

var性美元;

var时代美元;


函数__construct(姓名、性别、美元时代美元){

$ this→名称=$名称;,,,,

这→美元=$性;,,,,,

$ this→年龄=$年龄;,,,,

}

函数表示(){

回声”我的名字:“。$ this→名字。”;我的性别:“。这→美元。”;我的年龄:”。这个→美元时代。“灵活,br/祝辞”;

}

函数运行(){

echo $ this→名称。“在走路& lt; br/祝辞”;

}


//声明的析构方法,在对象销毁前自动调用

函数__destruct () {

回声”再见”。这个→美元的名字。“& lt; br/祝辞”;

}

}


$ person1=新人(“张三”,“男”、“40”);

person1美元=零;,,,,,,,,,,,,,,//第一个对象将失去引用

$ person2=新人(“李四”、“女”、“20”);,,,,

$ person3=新人(“王五”,“男”、“50”);,,,,

?在<强>
代码运行结果为:

构造方法与析构方法

,,因为对象的引用都是存放在栈内存中的,由于栈的后进先出的特点,最后创建的对象引用会被最先释放,所以先自动调用第三个对象的析构方法,最后才自动调用第二个对象的析构方法。

构造方法与析构方法