当前位置: 首页 > news >正文

PHP8中的构造方法和析构方法-PHP8知识详解

今日分享的内容是php8中的构造方法和析构方法,我们把构造方法和析构方法这两个方法分开来讲:

Image

1、构造方法

构造方法存在于每个声明的类中,主要作用是执行一些初始化任务。如果类中没有直接声明构造方法,那么类会默认地生成一个没有参数且内存为空的构造方法。

在PHP8中,构造方法的方法名称必须是两个下划线开头的,即“__construct”。具体的语法格式如下:

function__construct([mixed args]){
//方法的内容
}

一个类只能声明一个构造方法。构造方法中的参数是可选的,如果没有传入参数,那么将使用默认参数对成员变量进行初始化。

定义一个构造方法,参考代码:

<?phpclass Fruit {public $name;            //定义成员变量public $num;             //定义成员变量public function __construct($name, $num) { //定义构造方法$this->name=$name;                     //调用本类的成员变量$this->num=$num;                    //调用本类的成员变量}public function showFruit(){             //定义成员方法if($this->num>300){return $this->name."的库存充足,不需要进货!";}else{return $this->name. "的库存数量不多了,需要尽快进货!";}}}$f1=new Fruit ("橘子",600);                 //类的实例化并传递参数echo $f1->showFruit ();                    //调用方法echo "<br />";  $f2=new Fruit ("柚子",100);               //类的实例化并传递参数echo $f2->showFruit ();                   //调用方法
?>

以上代码在PHP8中的显示结果如下:

橘子的库存充足,不需要进货!
柚子的库存数量不多了,需要尽快进货!

由此可见,构造方法__construct()在实例化时会自动执行,通常对一些属性进行初始化,也就是对一些属性进行初始化的赋值。

要特别注意的是,构造方法不能有返回值(return)。

2、析构方法

析构方法的作用和构造方法正好相反。它是在对象被销毁的时候被调用执行的。但是因为PHP求的终有资源释放,所以析构方法的意义是有限的。具体使用的语法格式如下:

function __destruct(){
//方法的内容,通常是完成一些对象销毁前的清理任务
}

PHP 8具有垃圾回收机制,可以自动清除不再使用的对象,从而释放更多的内存。析构方法是在垃圾回收程序执行前被调用的方法,是 PHP 8编程中的可选内容。

不过,析构方法在某些特定行为中还是有用的,比如在对象被销毁时清空资源或者记录日志信息。

以下两种情况中,析构方法可能被调用执行。

(1)、代码运行时,当所有的对于某个对象的reference(引用)被毁掉的情况下。

(2)、当代码执行到最终,并且 PHP8 停止请求的时候。

定义析构方法参考代码:

<?phpclass Fruit {public $name;                               //定义成员变量public $num;                                //定义成员变量public function __construct($name,$num){   //定义构造方法$this->name=$name;                     //调用本类的成员变量$this->num=$num;                    //调用本类的成员变量}public function showFruit (){         //定义成员方法if($this->num>600){return $this->name."的库存充足,不需要进货!";}else{return $this->name."的库存数量不多了,需要尽快进货!";}}public function __destruct(){            //定义析构方法echo "析构函数被调用了,对象Fruit被销毁了!<br />";}}$f1=new Fruit("梨",800);                    //类的实例化并传递参数$f2=new Fruit("葡萄",100);                  //类的实例化并传递参数
?>

以上代码在PHP8中的运行结果如下:

析构函数被调用了,对象Fruit被销毁了!
析构函数被调用了,对象Fruit被销毁了!

PHP8使用的是一种“社圾回收”机制,能够自动清除不再使用的对象并释放内存,也就是说即使不使用unset()函数,析构方法也会被自动调用,这里只是明确一下析构方法在何时被调用。在一般情况下是不需要手动创建析构方法的。

到此为止,PHP8中的构造方法和析构方法这两个知识点就讲解完毕了。

http://www.lryc.cn/news/177694.html

相关文章:

  • 【GPU编程】Visual Studio创建基于GPU编程的项目
  • MySQL面试题-索引的基本原理及相关面试题
  • MySQL学习笔记19
  • 为什么u盘在mac上显示不出来
  • 【golang】调度系列之sysmon
  • 货物寄到英国选择什么物流比较划算?
  • vite + react 基本项目搭建
  • 一个方法解决三道区间问题
  • sub0 里斯本精彩回顾:探索波卡区块的创新空间
  • 颜色+情感的英语表达还有这些,零基础学英语口语去哪里,柯桥有推荐的吗?
  • exoplayer的使用-6,播放器的选择
  • Windows上安装 Go 环境
  • 【设计模式】四、工厂模式
  • 十九,镜面IBL--BRDF积分贴图
  • Linux 创建 终止线程(thread)
  • 【IPC 通信】信号处理接口 Signal API(6)
  • ipaguard界面概览
  • 萌新的FPGA学习绪论-1
  • 目标检测算法改进系列之Backbone替换为EMO
  • Laravel一些优雅的写法
  • vue+three.js中使用Ammo.js
  • 【k8s】kubectl命令详解
  • Centos 7 部署SVN服务器
  • SEO方案尝试--Nuxtjs项目基础配置
  • 【算法分析与设计】动态规划(上)
  • Java多线程篇(6)——AQS之ReentrantLock
  • 【计算机网络】IP协议第二讲(Mac帧、IP地址、碰撞检测、ARP协议介绍)
  • TouchGFX界面开发 | 按钮控件应用示例
  • BSVD论文理解:Real-time Streaming Video Denoising with Bidirectional Buffers
  • 共同见证丨酷雷曼武汉运营中心成立2周年