面向对象知识点总结

作者: JONE 分类: PHP/MySQL 发布时间: 2017-08-18 15:16

类的定义 类的组成 属性、方法、静态属性、静态方法、类常量

 

类中使用的关键字

$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)对象

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注