final :

1、final不能修饰成员属性

2、final只能修饰类和方法

 

final作用:

1、使用final修饰的类不能被子类继续

2、使用final修饰的方法不能被子类去覆盖

3、用来限制类不被继承,方法不被覆盖就使用final

 

static:

1、使用static可以修饰成员的属性和成员的方法,不能修饰类

2、使用static修饰的成员属性,可以被同一个类的所有对象共享

3、静态的数据是存在内存中的 数据段 中(初始化静态段)

4、静态的数据是在类么一次加载时,分配到内存中的,以后再用到类时就直接从数据段中获取

5、什么是类被加载?只要在程序中使用到这个类(有这个类名出现)

6、静态方法(static修饰的方法),不能访问非静态的成员(在非静态的方法中,可以访问静态成员),因为非静态的成员,就必须用对象来访问,访问内部的成员使用的就是$this,静态方法 不用使用对象来调用,也就没有对象,$this也就不能代表什么对象,非静态的成员还必须使用对象,如果你确定一个方法不使用非静态的成员,则可以将这个方法声明为 静态方法(不用创建对象,直接使用类名就可以访问)

 

静态成员:类名::成员   ,在内部访问其它成员:self::成员

 

Ps:静态的成员都要使用类名去访问,不用创建对象 (类名::静态成员),如果在类中使用静态成员,可以使用self::静态成员

 

const:

1、它只能修饰成员属性

2、类名中声明常量属性使用const

3、类名的方式和我们以前学习的define是一样的效果

4、访问方式个static静态成员属性是一样的(在类外部使用:类名::常量  ,在类内部使用: self::常量

5、常量一定要在声明时给初值

 

PHP中常用的魔术方法:

__call():

作用:1、在调用对象中不存在的方法时,就会出现系统报错,然后程序退出

声明时候自动调用:就是在调用一个对象中不存在的方法时自动调用(处理一些不存在的方法的错误调用,需要两个参数,具体的看api)

 

__toString():

直接输出对象引用时知道调用,用来快速获取大兄弟 字符串表示的最便捷的方式

 

__clone():

克隆对象:就是在克隆对象时自动调用,只要一个对象一诞生,就要有初始化的动作,和构造方法__construct作用相似,__clone()中的$this代表的是被克隆常量的那个对象,$that代表原本对象

 

__autoload():

Ps:其它的魔术方法都是在类中添加起作用,这是一个唯一一个不在类中添加方法的,只要在页面中使用掉一个类,只要用到这个类名,就会自动将类名传给这个参数

 

__sleep():   __wakeup(): 详细的看api