类的定义 类的组成 属性、方法、静态属性、静态方法、类常量
类中使用的关键字
$this 当前对象
self 永远代表其所在类的类名
parent 祖先类
static 静态变量、类静态、后期静态绑定时代表的是“当前类”的意思
clone 克隆对象
extends 类继承
instanceof 用于确定一个 PHP 变量是否属于某一类 class 的实例
自动加载
__autoload() 魔术方法名
spl_autoload__register() 自动加载函数,参数可以是函数名也可以是匿名函数
访问控制修饰符
public(公开的)protected(受保护的)private(私有的)
重写
就是在子类里重新定义与父类同名的方法或者属性的行为
当子类重写父类的方法的时候,方法的参数形式(个数),必须与父类保持一致(构造 方法除外)
魔术方法
__construct() 构造方法
__destruct() 析构方法
__clone() 克隆方法
重载是指在操作的对象成员(属性和方法)根本就不存在或没有权限访问时(比如私有成员)时自动执行对象中相关的魔术方法
__set() 属性重载 在给不可访问属性赋值时,__set() 会被调用
__get() 属性重载 读取不可访问属性的值时,__get() 会被调用
__isset() 属性重载 当对不可访问属性调用 isset() 或 empty() 时,__isset() 会被调用
__unset() 属性重载 当对不可访问属性调用 unset() 时,__unset() 会被调用
__call() 非静态方法重载 在对象中调用一个不可访问方法时,__call() 会被调用
__callstatic() 静态方法重载 在静态上下文中调用一个不可访问方法时,__callStatic() 会被调用
序列化相关魔术方法
__sleep() 序列化 在 serialize()序列化函数执行时该魔术方法自动执行分,返回的是一个包含需要序列化属性的数组
__wakeup() 反序列化 unserialize()反序列化函数执行书该魔术方法自动执行
针对对象本身调用时相关的魔术方法
__invoke() 把对象当做一个函数(或方法)来调用的时候,会自动执行该魔术方法
__toString() 当我们把一个对象当成是一个字符串来使用的时候,会自动的执行该模仿方法!
抽象类
抽象类、抽象方法 abstract 相关概念
抽象类只能被继承不能生成对象
最终类
最终类、最终方法 final 相关概念
最终类只能生成对象不能被继承
接口
接口成员:只能有抽象方法(但是不需要带 abstract 关键字)和类常量
接口 interface、接口实现 implements、接口继承 extends
两种类的典型模式
单例模式:一个类只能开辟一个对象空间(公开静态方法、私有化构造方法和静态方法和 静态变量)
工厂模式:设计一个类(此时这个类可以叫作“工厂类”),该类的作用就是帮助其他的类“生产”对象,也就是说,只要传递给这个“工厂”一个类名,就可以得到一个相应的对象!
命名空间
namespace 命名空间概念(与电脑中的目录文件夹相似)
空间的成员:常量(一般是 const 定义的常量)、函数、类
空间成员访问的三种情况:非限定名称访问(访问当前命名空间)、限定名称访问(访问子命名空间)、完全限定名称访问(访问指定的任意命名空间),”\” 代表根空间(当根目录理解)
空间引入、空间类的引入、关键字 use 空间名 \ 类名,as 给引入的空间类别名
关于类的魔术常量
__CLASS__ 代表当前类名 不能 new __CLASS__ 但是可以把__CLASS__ 赋值给另一个变量 $var, 然后 new $var
__METHOD__ 代表当前的方法名!
PS:
类实例化(new)对象
接口实现(implements)对象