鲁鲁槟 2016-07-09 17:42:04 2394次浏览 1条回复 0 0 0

作者:鲁鲁槟 出处:http://www.luluqi.cn/post/default/show-post?id=98 本文版权归作者,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。​

一、基本概念

1、对象:统一管理属于同一事物的变量,这就是对象

2、分析对象在内存中的存在形式(重要)

class Person 
{ 
    public $name; 
    public $age; 
}
$a = new Person(); .
$a->name = 'luluyii'; 
$a->age = 20; 
$b = $a; 

二、构造方法 _ _construct

1、构造方法是类的一种特殊方法,它主要作用是完成对新对象的初始化。

2、特点:构造方法没有返回值,是自动被调用的。

3、构造方法的形式

php 4中构造方法的名字和类型一致 class Person{ public function Person(){} } 
php5中一个类可以同时有两种形式的构造方法_ _construct()和类名(),当两个方法同时存在时优先调用_ _construct()

4、一个类有且只有一个构造方法,在php5后虽然_ _ construct()和类名()可以共存,但实际也只能使用一个

5、如果没有给类自定义构造方法,则该类默认使用系统的构造方法

6、构造方法的默认访问修饰符是public

三、析构方法 _ _destruct

1、基本概念

(1)php5之后加入的,主要作用是释放资源,并不是销毁对象本身。

(2)在销毁对象前,系统会自动调用该类的析构方法

(3)一个类最多只有一个析构方法

2、说明

(1)析构方法调用顺序:先创建的对象资源后被释放

(2)析构方法被调用时间:当程序退出,即进程结束时;当一个对象成为垃圾对象时;

(3)垃圾对象是指没有任何变量再引用它

3、案例1

$p1 = new Person("luluyii",1);
$p2 = new Person("lulubin",2);

解释:

(1)栈的先入后出,由于$p1先进栈,故$p2先出栈

(2)垃圾对象:当指向堆区的箭头消失时,如①消失,则堆区中0x12成为垃圾对象

(3)让对象成为垃圾对象:$p1 = null;

(4)当0x12成为垃圾对象时,会先被立即调用,即先调用$p1再调用$p2

4、案例2

class Person
{
    public $name;
    public $age;
    //构造方法
    public function _ _construct($name,$age){
        $this->name = $name;
        $this->age = $age;
    }
    //析构方法
    public function _ _destruct(){
        echo $this->name."销毁资源";
    }
}
$p1= new Person("luluyii",1);
$p2= new Pserson("lulubin",2);
输出:luluyii销毁资源    lulubin销毁资源
$p1 = new Person("luluyii",1);
$p1 = null; 
$p2 = new Pserson("lulubin",2); 
输出:lulubin销毁资源 luluyii销毁资源
您需要登录后才可以回复。登录 | 立即注册