析构方法说明:

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析构方法的更多相关文章

  1. php构造方法与析构方法

    1. 构造方法 <?php //构造方法 __construct() 是在实例化对象时被自动调用 //用途:可以用于初始化程序(可以给成员属性赋值,也可以调用成员方法) //语法:[修饰符] f ...

  2. 【Swift学习】Swift编程之旅---析构方法(十九)

    在一个类的实例内存被释放之前,析构方法被立即调用.使用deinit关键字来声明析构方法,类似于构造方法用init来声明.析构方法只适用于类类型.   析构方法原理 Swift会自动释放不再需要的实例以 ...

  3. 【PHP构造方法和析构方法的使用】

    构造方法:__construct,析构方法:__destruct 代码示例: <?php class Person { public $name; public $age; public fun ...

  4. PHP-----类与对象,成员方法,成员属性,构造方法,析构方法

    php里面的类-----class XX{},通过类的定义,可以使用调用类里面的成员属性和成员方法. 对象---一个类就是一个对象,一个对象可以有多个属性,一个类可以有多个成员方法. 构造方法:一个类 ...

  5. PHP其它常用函数;<<<面向对象(OPP)的三大特性:封装、继承、加态:>>> <----面试题 ;构造方法、析构方法,魔术方法、set、get方法;静态;抽象类;接口

    PHP其它常用函数:     赋值:$r->name = "元素";      取值: echo $r->name;  count()   计算数组中的元素数目或对象中 ...

  6. 【M11】禁止异常流出析构方法之外

    1.在两种情况下,调用析构方法:a.在正常状态下被销毁,栈上的对象离开作用域或者堆上的对象执行delete:b.抛出异常,堆栈回滚,栈上已经构造好的对象,也就是抛出异常之前的代码,自动调用析构方法.注 ...

  7. C++ 析构方法

    1.什么是析构方法? 析构方法与构造方法互补. 2.为什么设计析构方法? 构造方法创建一个对象,对象内部往往还会申请一些资源.设计析构方法的目的是 释放资源,同时销毁自身. 3.析构方法可以认为分为两 ...

  8. 【07】为多态基类声明virtual析构方法

    1.考虑下面的需要,需要一个工厂方法.工厂方法的规则是:在堆上分配一个子类对象,并返回父类指针.使用完毕,delete父类指针.如果父类的析构方法不是virtual,将直接调用父类的析构方法,导致局部 ...

  9. PHP面向对象的构造方法与析构方法

    构造方法与析构方法是对象中的两个特殊方法,它们都与对象的生命周期有关.构造方法时对象创建完成后第一个被对象自动调用的方法,这是我们在对象中使用构造方法的原因.而析构方法时对象在销毁之前最后一个被对象自 ...

  10. swift3.0 构造器、析构方法(3)

    构造和析构是两种特殊的方法,在对象进行初始化的时候 使用构造,在对象的释放操作中,使用析构. 构造器的定义: init (){ //代码 } init(name:String){ //代码 } 在构造 ...

随机推荐

  1. JavaScript之BOM

    一.什么是BOM? BOM(Browser Object Model)是指浏览器对象模型,它使 JavaScript 有能力与浏览器进行“对话”. 二.Windows对象 Window对象是客户端Ja ...

  2. wireshark抓包看ECN

    由于实验需要,要统计ECN信息.为了验证拓扑中是否真的有ECN信息,用了wireshark进行抓包查看. 网上找到的相关有用资料有:http://blog.csdn.net/u011414200/ar ...

  3. js改变盒子大小(上下左右)分析

    js改变盒子大小 知识点 三个mouse事件:mousedown mousemove mouseup css的定位和cursor 思路 先解决单边问题识别范围,得到所选区域 event. 根据距离,判 ...

  4. 杭电oj-1002-A+B Problem

    Problem Description I have a very simple problem for you. Given two integers A and B, your job is to ...

  5. Intellij IDEA查看所有断点

    项目中打的断点太多,有时自己也想不到打在哪里了,也不知道哪些方法.哪些代码行上打了断点,在IDEA中如何查看所有断点呢? 方法如下: step 1 IDEA的debug面板中有一个名称为View Br ...

  6. Canvas 画布组件(官网翻译)

    Canvas画布 The Canvas is the area that all UI elements should be inside. The Canvas is a Game Object w ...

  7. python基础整理----基本概念和知识

    整理一下python的基本概念和知识, 主要用python3为语法标准. python介绍 一种面向对象的解释性计算机设计语言,具有丰富和强大的库. python定位:"优雅".& ...

  8. Android Service 基础

    启动方式 startService(Intent) 这种方式启动的Service可以在后台无限期的运行,与启动它的组件没有关系. bindService 绑定Service.它提供了一种类似C/S结构 ...

  9. 【Linux】 linux的进程系统一点补充

    linux进程系统 ■ 程序 vs. 进程 程序静态地存放在磁盘中.用户可以触发执行程序,被触发后的程序就存进内存中成为一个个体,即为进程. 有些进程(比如crond需要每分钟都扫描.守护进程等等)是 ...

  10. 关于JSP页面URL传值所遇到的小问题

    在JSP页面中我的页面传值加了分号,在后台取值是没有问题的. 但是在XML底层执行时就会返回不了值,这是什么原因呢? 经过努力排查发现了分号导致了${XXX}的值都成了和前面ID一样的串.去掉${XX ...