php析构方法
析构方法说明:
1. 析构方法会自动调用
2. 析构方法主要用于销毁资源(比如释放数据库的链接,图片资源...销毁某个对象..);
析构函数会在到对象的所有的引用都被删除或者当对象被显示销毁时执行.
3.析构方法调用顺序是,先创建的对象后被销毁
4. 析构方法什么时候被调用
(1) 当程序(进程结束)退出时
(2) 当一个对象称为垃圾对象的时候,该对象的析构方法也会被调用,
(3) 所谓垃圾对象,就是指,没有任何变量再引用它.
(4) 一旦一个对象成为垃圾对象,析构方法就会立即调用
析构方法小结:
①php5加入的的析构方法function __destruct()
②析构方法没有返回值也不接受参数
③主要作用是释放资源的操作,并不是销毁对象本身。
④在销毁对象前,系统自动的调用该类的析构方法
⑤一个类最多只有一个析构方法。
析构方法实例1:
<?php
class Person {
public $name;
public $age;
public $conn;
//构造方法
public function __construct($name, $age) {
$this->name = $name;
$this->age = $age;
//假设此处有一个打开一个$conn链接数据库资源的函数体 }
//写一个析构方法 __ 是两个下划线
function __destruct() {
echo $this->name . " 销毁资源 关闭数据库 . . <br/>";
}
}
$p1 = new Person("1.贾宝玉", 16);
$p1 = null; //$p1掷空是对其对应地址下标掷空,如$p1[0x678],即掷空了中括号中的数据,地址对应的数并没有改变。
//$p1掷空马上就要被销毁,所以p1p2p3的销毁顺序为:$p1->$p3->$p2
$p2 = new Person("2.林黛玉", 14);
$p3 = new Person("3.王熙凤", 15);
?>
析构方法实例2:
<?php
//创建一个人类
class Person {
//下面是人的成员属性
public $name; //人的名子
public $sex; //人的性别
public $age; //人的年龄
//定义一个构造方法参数为姓名$name、性别$sex和年龄$age
public function __construct($name, $sex, $age) {
//通过构造方法传进来的$name给成员属性$this->name赋初使值
$this->name = $name;
//通过构造方法传进来的$sex给成员属性$this->sex赋初使值
$this->sex = $sex;
//通过构造方法传进来的$age给成员属性$this->age赋初使值
$this->age = $age;
}
//这个人的说话方法
function say() {
echo "我的名子叫:" . $this->name . " 性别:" . $this->sex . " 我的年龄是:" . $this->age . "<br/>";
}
//这是一个析构函数,在对象销毁前调用
function __destruct() {
echo "再见" . $this->name . "<br/>";
}
}
//通过构造方法创建3个对象$p1、p2、$p3,分别传入三个不同的实参为姓名、性别和年龄
$p1 = new Person("张三", "男", 20);
$p2 = new Person("李四", "女", 30);
$p3 = new Person("王五", "男", 40);
//下面访问$p1对象中的说话方法
$p1->say();
//下面访问$p2对象中的说话方法
$p2->say();
//下面访问$p3对象中的说话方法
$p3->say();
?>
运行结果:
我的名子叫:张三 性别:男 我的年龄是:20
我的名子叫:李四 性别:女 我的年龄是:30
我的名子叫:王五 性别:男 我的年龄是:40
再见王五
再见李四
再见张三
转载处;http://blog.csdn.net/u013372487/article/details/46662687
php析构方法的更多相关文章
- php构造方法与析构方法
1. 构造方法 <?php //构造方法 __construct() 是在实例化对象时被自动调用 //用途:可以用于初始化程序(可以给成员属性赋值,也可以调用成员方法) //语法:[修饰符] f ...
- 【Swift学习】Swift编程之旅---析构方法(十九)
在一个类的实例内存被释放之前,析构方法被立即调用.使用deinit关键字来声明析构方法,类似于构造方法用init来声明.析构方法只适用于类类型. 析构方法原理 Swift会自动释放不再需要的实例以 ...
- 【PHP构造方法和析构方法的使用】
构造方法:__construct,析构方法:__destruct 代码示例: <?php class Person { public $name; public $age; public fun ...
- PHP-----类与对象,成员方法,成员属性,构造方法,析构方法
php里面的类-----class XX{},通过类的定义,可以使用调用类里面的成员属性和成员方法. 对象---一个类就是一个对象,一个对象可以有多个属性,一个类可以有多个成员方法. 构造方法:一个类 ...
- PHP其它常用函数;<<<面向对象(OPP)的三大特性:封装、继承、加态:>>> <----面试题 ;构造方法、析构方法,魔术方法、set、get方法;静态;抽象类;接口
PHP其它常用函数: 赋值:$r->name = "元素"; 取值: echo $r->name; count() 计算数组中的元素数目或对象中 ...
- 【M11】禁止异常流出析构方法之外
1.在两种情况下,调用析构方法:a.在正常状态下被销毁,栈上的对象离开作用域或者堆上的对象执行delete:b.抛出异常,堆栈回滚,栈上已经构造好的对象,也就是抛出异常之前的代码,自动调用析构方法.注 ...
- C++ 析构方法
1.什么是析构方法? 析构方法与构造方法互补. 2.为什么设计析构方法? 构造方法创建一个对象,对象内部往往还会申请一些资源.设计析构方法的目的是 释放资源,同时销毁自身. 3.析构方法可以认为分为两 ...
- 【07】为多态基类声明virtual析构方法
1.考虑下面的需要,需要一个工厂方法.工厂方法的规则是:在堆上分配一个子类对象,并返回父类指针.使用完毕,delete父类指针.如果父类的析构方法不是virtual,将直接调用父类的析构方法,导致局部 ...
- PHP面向对象的构造方法与析构方法
构造方法与析构方法是对象中的两个特殊方法,它们都与对象的生命周期有关.构造方法时对象创建完成后第一个被对象自动调用的方法,这是我们在对象中使用构造方法的原因.而析构方法时对象在销毁之前最后一个被对象自 ...
- swift3.0 构造器、析构方法(3)
构造和析构是两种特殊的方法,在对象进行初始化的时候 使用构造,在对象的释放操作中,使用析构. 构造器的定义: init (){ //代码 } init(name:String){ //代码 } 在构造 ...
随机推荐
- 将PPT文件内容转换为图片放在Email邮件正文中发送
通过Email推送统计报告.一般除了要求将PPT报告文件作为附件发给用户,同时希望将报告内容在邮件中直观展示. 一份统计报告中经常包含柱状图.饼图.好看的图表,这些信息要直接在Email中展示比较复杂 ...
- java接口----继承(实现)方法
文中"实现"一词特指接口的继承. 一个类实现多个接口时,不能出现同名的默认方法. 一个类既要实现接口又要继承抽象类,先继承后实现. 一个抽象类可以继承多个接口(implements ...
- spring boot整合log4j2
POM配置 <?xml version="1.0" encoding="UTF-8"?> <project xmlns="http: ...
- 通过Performance Log确定磁盘有性能问题?
一些比较重要的performance counter: Counter Description LogicalDisk\ % Free Space 报告磁盘空间中未被分配的空间占逻辑卷中总可用空间的百 ...
- New Windows 10 SDK - Toast Notification
概述 Toast Notification 在 UWP App 中有很重要的作用,能够很大程度上增强 App 和用户之间的沟通,比如运营推广活动.版本更新.提醒类任务提示等等.Toast Notifi ...
- python全栈开发-Day7 文件处理
python全栈开发-Day7 文件处理 一 .文件操作 一 .介绍 计算机系统分为:计算机硬件,操作系统,应用程序三部分. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必 ...
- TypeScript入门(三)面向对象特性
一.类(Class) 类是ts的核心,使用ts开发时,大部分代码都是写在类里面. 1.类的声明 多个对象有相同的属性和方法,但是状态不同. 声明类的属性和方法时可以加 访问控制符,作用是:类的属性和方 ...
- ASP.NET MVC编程——错误处理与日记
ASP.NET MVC的错误处理应考虑到这几个方面:模型绑定期间发生的错误,未能路由到指定操作,针对控制器的错误处理.使用配置文件可以帮助我们处理异常,但是不够灵活和全面:使用HandleErrorA ...
- 【jQuery】 JQ和AJAX
AJAX AJAX全称异步 JavaScript 和 XML(Asynchronous JavaScript and XML),是一种用于网页前端和网站后台进行数据交互的手段.关于AJAX的详细介绍在 ...
- 简单爬虫 -- 以爬取NASA AOD数据(TIFF文件)为例
目录: 网站分析 爬取下载链接 爬取TIFF图片 1.网站分析 主页面:https://neo.sci.gsfc.nasa.gov/view.php?datasetId=MYDAL2_M_AER_OD ...