一、 静态static关键字
1、静态属性用于保存类的公有数据
2、静态方法中只能访问静态属性
3、静态成员不需要通过实例化来访问。
4、类的内部可以通过self或者static关键字访问自身静态变量。访问变量的时候需要在变量名前加美元符号。
5、可以通过parent关键字访问父类的静态成员。
6、可以通过类的名称在类定义外部访问静态成员。
二、对象引用的基本概念
class A{};
$B=new A();
$C=$B;
此时变量$C引用的是一个A对象, 当变量$B被赋值为null的时候,$C并不会为null。
$C=&$B
此时当变量$B被赋值为null的时候,$C会为null。
对象的析构函数__destruct当且仅在没有变量继续引用的时候,就会调用。析构函数和
构造函数不能显示调用。
三、数据访问
parent关键字可以用于调用父类中被子类重写了的方法.
self关键字可以用于访问类自身的成员方法,也可用于访问自身的静态成员和类常量。
不能用于访问类自身的属性。使用常量的时候不需要在常量名称前加上$符号。
static关键字用于访问类自身定义的静态成员,防伪静态属性需要在属性前添加$符号。
四、魔术方法
__tostring()方法 对象被当做String使用时,这个方法被自动调用。
class A(){}:
在类中定义了__tostring()方法的时候,直接声明$obj=new A(); echo $obj会自动调用__tostring()方法.
__invoke()方法 当类被当做方法调用的时候,这个方法会被自动调用
class A(){}:
在类中定义了__invoke()方法的时候,直接声明$obj=new A(); echo $obj()会自动调用__invoke()方法.
__call() 当访问类中不存在的方法的时候,这个方法会被自动调用
参数列表 __call($name,$parameters)
__callStatic()当访问类中不存在的静态方法的时候,这个方法会被自动调用。
参数列表 __callStatic($name,$parameters)
必须被声明为static
__get()方法当访问类中不存在的属性的时候,
会自动调用这个方法。
函数的参数__get($name)
__set()方法当给类中不存在的属性赋值的时候,会自动调用这个方法。
__set()函数参数($name,$value);
__isset()方法当用isset()或者empty()判断属性存不存在的时候,
传入的属性并不存在的时候,该方法将会自动调用。
__unset()方法当用unset()传入一个不存在的属性的时候,会自动调用、
__clone()方法,
当使用clone方法的时候,如果没有声明__clone方法,
使用$obj2=clone $obj1;能够完全拷贝obj1的内容,并且更改
$obj2的属性不会影响到$obj对应的属性。
__clone可在这个时候,控制clone过程中,希望不被复制的内容。