带你分清类中的构造函数与析构函数
PHP类中构造函数也叫作构造器,当时用new关键字实例化一个对象时,它可以在对象被创建时自动调用,是类中的一个特殊函数。与之相对应的函数就是析构函数,析构函数的作用与构造函数正好相反,析构函数它可以在对象销毁前执行操作。那接下来我们一起来看一看这两个函数吧。
__construct()
:构造函数/方法
在PHP的类中,我们使用__construct()
作为类的构造函数,构造函数是当对象被创建时,类中被自动调用的第一个函数,并且一个类中只能存在一个构造函数,并且需要注意的是,如果构造函数中有参数的话,那么实例化也需要传入对应的参数。
构造函数创建的语法格式如下:
public function __construct(参数列表){ ... ... }
需要注意的是,其中的参数列表是可选的,不需要的时候可以省略。construct前面是两个下划线__
。
实例如下:
<?php class study{ public $study1, $study2, $study3,$study4; public function __construct($str1, $str2, $str3,$str4){ $this -> study1 = $str1; $this -> study2 = $str2; $this -> study3 = $str3; $this -> study4 = $str4; $this -> demo(); } public function demo(){ echo $this -> study1.'<br>'; echo $this -> study2.'<br>'; echo $this -> study3.'<br>'; echo $this -> study4.'<br>'; } } $object = new study('好好学习','天天向上','福如东海','寿比南山'); ?>
示例中的$this表示当前调用的对象。输出结果:
由上述结果,我们通过,我们通过__construct()
构造函数,就调用了类中创建的对象。
__destruct()
:析构函数/方法
刚才讲到的__construct()
构造函数,它会在对象被创建的时候调用,与之相对应的就是析构函数,析构函数的作用与构造函数相反,析构函数只有当对象从内存中删除之前才会被自动调用,在PHP中有垃圾回收机制,当对象不能被访问就会自动启动垃圾回收机制,析构函数就是垃圾回收对象前调用。
__destruct()
函数的语法格式如下:
public function __destruct(){ ... ... }
需要注意的是,与构造函数类似,destruct前面也是两个下划线__
;不同的是析构函数不能带有任何参数。
实例如下:
<?php class Website{ public $study1, $study2; public function __construct(){ echo '构造函数被调用了<br>'; } public function __destruct(){ echo '析构函数被调用了<br>'; } } $object = new Website(); echo '好好学习<br>'; echo '天天向上<br>'; ?>
输出结果:
由上述实例可以看出,构造函数与析构函数调用的时间不同,构造函数在对象被创建时自动调用,析构函数在对象被垃圾收集器收集前被调用。
$this
:当前对象
在PHP面对对象编程中,对象被创建之后,在对象中的每个成员方法里,都会存在一个特殊的对象引用“$this
”,与连接符->
联合使用,专门用来完成对象内部成员之间的访问。示例如下:
$this -> 成员属性; $this -> 成员方法(参数列表);
我们在类中访问一个成员属性时,后面只需要跟着属性名称就行了,不用加$符号,$this只能在对象中使用,没有对象就没有$this。
示例如下:
<?php class Website{ public $name; public function __construct($name){ $this -> name = $name; $this -> name(); } public function name(){ echo $this -> name; } } $object = new Website('好好学习'); ?>
输出结果:
大家如果感兴趣的话,可以点击《PHP视频教程》进行更多关于PHP知识的学习。
-
Linux常用命令awk的用法 grep、awk、sed三者的区别 时间:2025-09-09
-
C++中命名空间的定义、使用、作用、类型、和类的区别 时间:2025-09-09
-
batchplot插件用法 batchplot插件安装教程 时间:2025-09-09
-
%s在c语言中含义和用法 %s和其他格式化符号的区别 时间:2025-09-09
-
%s在python中含义和用法 %s和其他格式化符号的区别 时间:2025-09-09
-
计算机MAR代表什么 MAR和MDR的区别 时间:2025-09-09
今日更新
-
瞳孔地震是什么梗?揭秘网络热词背后的爆笑瞬间!
阅读:18
-
统一六国的梗是什么梗?揭秘秦始皇爆笑网络热梗背后的真相!
阅读:18
-
捅西瓜梗是网络流行语,源自搞笑视频中夸张捅西瓜动作,暗指用极端方式解决问题,幽默又带讽刺意味。
阅读:18
-
怪兽八号手游核爆配队详解-适用所有主C
阅读:18
-
逆水寒手游十月版本前瞻-航母联动特色逆水杀曝光
阅读:18
-
女神异闻录:夜幕魅影P5X-片山久未技能简读搭配推荐
阅读:18
-
时空绘旅人幕叙心事活动预告-可获得罗夏CR独白等奖励
阅读:18
-
桶是什么梗?揭秘网络热词桶的搞笑来源和流行用法,看完秒懂!
阅读:18
-
CF手游MK5哪吒怎么样-MK5哪吒武器前瞻
阅读:18
-
恋与深空限定喵呜币额外掉落-秋游喵喵系列徽章上新
阅读:18