成员方法
在一个类中,当我们需要对象完成一个人任务时,就需要在类中定义一个函数,这个函数就称为成员方法
案例:
1.添加成员方法,打印一个字符串
2.添加sum求和的成员方法,计算1-100的和
3.添加num成员方法,计算变量的2倍的值
4.添加getMax成员方法,计算最大值
成员方法的基本语法
class 类名{
成员属性;
访问修饰符 function 成员方法(形参){
方法体
return;
}
}
说明:
- 成员方法定义在类中
- 成员方法前面可以有访问修饰符,不写默认是public
- 成员方法的运行原理和普通的函数是一样的
成员方法说明:
- 方法的形参可以是多个,适合所有的类型
- 方法可以没有return,默认返回的时null
- 成员方法不可以直接调用,而是通过对象实例化调用的
构造方法
就是给成员属性进行初始化
构造方法基本语法:
class 类名{
访问修饰符 function __construct(形参){
对成员属性初始化
}
}
说明:
- 构造方法的访问修饰符可以是public、protected、private,一般情况是public,默认是public
- __construct是关键词,不能修改。前面是两个下划线_
- 构造方法没有返回值,即没有return
- 构造方法是系统调用的,程序员不能显示调用
案例:
构造方法的细节和注意事项:
- 构造方法没有返回值,就算写了没有任何意义
- 在创建一个类的新对象时,系统会自动的调用该类的构造方法对新的对象进行初始化
- 构造方法的作用就是对成员属性进行初始化,而不是创建对象本身
- 在一个类中,构造方法有且只有一个,定义多个会报错
- 在php4中可以使用类名作为构造方法,在php5也支持
默认构成方法:
在类中,如果没有定义构造方法,那么系统会默认有一个构造方法
注意:
- 一旦自定义了一个构造方法,默认的构造方法就会被覆盖,这时创建对象的时候就会使用自定义的构造方法
- 一个类只能有一个构造方法
this只能在类的方法中使用,而不能在类的外部使用
构造方法小结:
- 构造方法的名和类名相同也可以使用关键词__construct
- 构造方法没有返回值
- 作用是对新对象进行初始化
- 一个类有且只有一个构造方法
- 如果没有给类自定义构造方法,该类使用系统默认的构造方法
- 如果给类定义了构造方法,该类的默认构造方法被覆盖
- 构造方法默认使用的修饰符是public
析构方法:
在php5中引入了析构函数,类似于面向对象语言,析构函数会在某个对象的所有引用都被删除或当对象被显式销毁时执行
分析:
- 在php中引入的一个技术
- 某个对象的所有引用都被删除
- 使用unset(对象名),将对象名销毁
- $对象名 = null。对象名赋值null
- $对象名 = ‘abc’;对象名赋值字符串,对象名就变成普通变量
- 显式销毁,上面三种销毁都是显式销毁,就是程序员主动的删除对象引用,如果程序员不去主动销毁对象,那么在程序执行完毕后,这个对象就会被系统销毁,这就是系统销毁机制
php文件执行流程:
析构函数基本使用:
基本语法:
class 类名{
public function __destruct(){
函数体
}
}
说明:
- 析构函数都是public修饰符
- __destruct关键词,不能修改
- 析构函数没有形参
- 析构函数是系统调用的
- 析构函数在以下情况会被调用
- php文件执行完毕
- 某个对象的所有引用都被删除后,就会马上调用析构函数
作用:
析构函数的作用就是释放对象创建的资源,如:数据库连接,文件句柄,绘图句柄等
析构函数小结:
- 当没有变量指向某个对象时,这个对象就会被销毁
- 在销毁对象前,析构函数会被调用的
- 析构函数不是销毁对象本身,而是在销毁对象前给程序员一次机会,可以让程序员去及时的回收该对象创建的资源,比如数据库连接
析构函数最佳实战:
使用析构函数完成对资源的及时释放
说明:
- 关于在析构函数中释放资源的问题,如果我们对效率没有很高的特殊要求,完全可以不使用析构函数
- 如果我们不确定嗲吗后面是否还会使用资源(比如链接),那我们建议最好不要使用析构函数
- 项目有特殊和明确的要求时,我们可以使用析构函数,显式销毁对象时,在析构函数中释放资源
垃圾回收机制
- 在php中,当一个对象没有任何引用指向它的时候,就会成为一个垃圾对象,php将启用垃圾回收器将对象销毁
- 当程序退出前,php也将启用垃圾回收器,销毁对象
php垃圾回收机制是php5之后才有的,php5.3之前使用的垃圾回收机制是单纯的引用计数,也就是每个内存对象都分配一个计数器,,当内存对象被变量引用时,计数器+1 ,当变量引用撤掉时,计数器-1,当计数器=0时,表明内存对象没有被使用,该内存对象则进行销毁,垃圾回收完成
php5.3开始,使用了新的垃圾回收机制,在引用计数基础上,实现了一个复杂的算法,来检测内存对象中引用环的存在,以避免内存泄漏
1234