类
魔术方法
-
__constructor () {}
构造函数
-
__destruct
析构函数
-
__set
两个参数,要设置对象的名称,设置对象的值,当修改了对象的属性的时候,这个方法被调用,
-
__get
一个参数,获取对象的名称,当对象的属性被获取的时候,这个方法被调用
-
__isset
一个参数,对象属性名,当类外使用isset
判断属性是否存在时被调用
-
__unset
一个参数,对象属性名,当类外使用unset
删除属性时被调用
继承
class A extends B
-
private
只能在当前类中访问
-
protect
只能在当前类或子类中访问
-
public
在当前类中,子类中,类外都可以访问
- 在子类的方法中使用
parent::fun()
调用父类的方法,子类的权限要低于父类(父public
,子只能是public
)
关键字
final
-
final
标识的类不能被继承
-
final
标识的方法不能被子类覆盖
static
- 在类中使用
static
关键字声明的方法和变量在对象中共享
- 在方法中使用
selt::$name
使用变量或方法
- 可以用来统计类声明了对象的数量
- 涉及到单态设计模式
const
- 在类的内部定义常亮
- 使用
const
声明的常量名称钱不使用$
- 变量名通常是大写的
instanceof
- 判断对象是否是类的实例
- 判断类是否是父类的子类
- 语法:
$man instanceof Person
克隆对象(深复制)
$p1 = new Person();
$p2 = clone $p1;
通用方法
toString
- 通过
obj.toString()
方式调用类中的__toString
函数
- 打印出
__toString
函数的返回值
-
__toString
中至少有一个参数作为返回值
__call
- 如果调用对象中不存在的方法,则自动执行
__call
函数
-
__call
函数有两个返回值:方法名(String)和参数(Array)
自动加载类
- 方便引用类,如果没有在当前作用域内找到类名,则自动调用全局
__autoload
方法。
function __autoload($className){
include(strtolower($className).".class.php")
}
对象串行化 313
- 对象串行化就是把对象转成二进制数据,方便传输或者保存
- 对象串行化方法:
$person_string = serialize($person)
- 将串行化后的对象转成对象:
$person_string = unserialize
- 使用
serialize
时会自动调用类中的__sleep
函数,这个函数返回一个含有多个对象属性的数组,规定了哪些属性需要被串行化
抽象类与接口
抽象类
- 只要有一个抽象函数就叫做抽象类。
- 抽象类可以拥有不抽象的方法或属性,但是不能用
private
关键字修饰