温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

构造方法与析构方法

发布时间:2020-07-12 05:05:52 来源:网络 阅读:430 作者:yuxin1234567890 栏目:网络安全

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

1、构造方法

   在类中声明构造方法的格式如下:

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

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

}

<?php

class person{

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

var $name;

var $sex;

var $age;


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

function __construct($name="",$sex="男",$age="1"){

$this->name=$name;       //在创建对象时,使用传入的参数$name为成员属性                                                 $this->name赋初值

$this->sex=$sex;         //在创建对象时,使用传入的参数$sex为成员属性$this-                                             >sex赋初值

$this->age=$age;         //在创建对象时,使用传入的参数$age为成员属性$this-                                            >age赋初值

}

function say(){

echo "我的名字:".$this->name.";我的性别:".$this->sex.";我的年                                  龄:".$this->age."。<br/>";

}

function run(){

echo $this->name."在走路<br/>";

}

}


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

$person1=new person("张三","男","40");        //创建对象$person1时会自动执行构造方法,将全                                                  部参数传给它

$person2=new person("李四","女");        //创建对象$person1时会自动执行构造方法,传入前两个                                             参数

$person3=new person("王五");        //创建对象$person1时会自动执行构造方法,只传入一个参数


$person1->say();

$person1->run();


$person2->say();

$person2->run();


$person3->say();

$person3->run();

?>

代码运行结果如下所示:

构造方法与析构方法


2、析构方法

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

function __destruct(){          //析构方法名称是以两个下划线开始的__destruct()

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

}

<?php

class person{

var $name;

var $sex;

var $age;


function __construct($name,$sex,$age){

$this->name=$name;       

$this->sex=$sex;         

$this->age=$age;        

}

function say(){

echo "我的名字:".$this->name.";我的性别:".$this->sex.";我的年龄:".$this->age."。<br/>";

}

function run(){

echo $this->name."在走路<br/>";

}


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

function __destruct(){

echo "再见".$this->name."<br/>";

}

}


$person1=new person("张三","男","40");

$person1=null;                             //第一个对象将失去引用

$person2=new person("李四","女","20");       

$person3=new person("王五","男","50");        

?>
代码运行结果为:

构造方法与析构方法

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


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI