2、类的结构
class 类名
{
//定义属性,使用关键字var
var $var1;
var $var2;
...
//定义方法,使用关键字function
function method1(...){...}
function method2(...){...}
...
} 不可以将一个类分开定义到多个PHP标记对中,更不可以分开定义到多个文件中。
3、类的实例化
使用关键字new来创建类的实例
$实例名=new 类名;
4、使用类的属性
若要使用类中定义的属性或方法,只需使用运算符"->"即可。如果在类定义时需要访问类内部自身定义的属性或方法,则需要使用$this指针。
一般来说,从类的外部直接访问类的属性存在一定的风险,为此PHP对于访问类属性提供了一些保护措施。__set(),__get(),当视图引用一个
类中不存在的属性时,就会调用这些方法进行相应的处理。
5、类的访问控制 控制类的属性和方 法
如果对类的属性指定了访问控制类型,则关键字var需省略
public 在类的内部和外部都可以访问。该选项是默认选项。
使用“::”运算符可以在没有创建任何类的实例的情况下访问类中的函数或者变量
格式如下:类名::函数类名::变量
private 只能在类的内部进行访问
protected 只能在该类和其子类中使用
6、构造函数
构造函数在一个类被实例化时自动调用。PHP不支持多个构造函数。
构造函数的语法格式如下:function __construct(参数1,参数2,...){}
7、析构函数
析构函数会在类对象被销毁前调用,通常用来设定对象被销毁前需要完成的一些操作。销毁对象最简单的方法是直接对其赋值NULL
析构函数语法:function __destruct(){}
脚本在执行结束时,PHP会自动销毁内存中的所有对象。因此,对于一般的类对象不需要显式地定义析构函数。
但是如果类对象在实例化时创建了不太容易销毁的数据,如果数据存储在数据库中而不是内存中,就应当定义一个析构函数,在类
对象销毁时使这些数据能够正常被销毁。
8、静态属性和方法
静态属性和方法需要使用关键字“self::”来引用,其他介绍前文已有
9、类运算符instanceof
可以判断一个对象是否是一个类的实例
10、继承已有的类
继承使用关键字extend
11、类的重载
重载是指在子类中再次定义与父类相同的属性和方法。类的重载使得在子类中可以给某个属性赋予一个与其父类中不相同的值,
也可以给某个方法指定一个与其父类中不相同的功能。
12、访问父类中的属性和方法
一个子类可以通过继承和重载得到父类中的属性和方法,并能够重写所继承的属性和方法。但有些时候,在子类中会需要直接
调用父类中的方法。在PHP中可以使用关键字“parent::”来实现对父类中属性和方法的访问。
13、使用final关键字禁止继承和重载
当在一个函数定义前面使用关键字“final”时,表示该函数将不能被任何子类重载。
如果不希望让一个类继承,只需在定义类时为其添加“final”关键字
如果一个类中的属性或方法被指定为“private”,则该属性或方法将不能被继承
如果一个类中的属性或方法被指定为“protected”,则该属性或方法可以被子类继承,但不能在类外部直接访问
如果一个类中的属性或方法被指定为“public”,则该属性或方法不仅可以被子类继承,而且在任何地方都可以被访问
14、抽象类和抽象方法
抽象类是不能实例化的类,只能作为其他类的父类使用。所以继承抽象类的子类都必须实现所有的抽象方法。
在PHP中使用关键字“abstract”定义一个抽象类和方法。
15、接口
接口是一种特殊的抽象类,这种抽象类中通常只包含抽象方法,不定义属性。属性的定义和抽象方法的实现交给实现接口的类来完成。
定义接口使用关键字“interface” 实现接口使用关键字“implements”
16、实现多个接口
PHP中的类不允许多重继承,但允许实现多个接口
17、对象的赋值
目标对象 = clone 原对象; 复制后两个对象完全一样,但互不干扰
在PHP中还可以使用__clone()方法调整对象赋值的行为。默认情况下,该函数将建立一个与原对象拥有相同属性和方法的对象,如果希望
在赋值后改变原对象中的某些内容,只需在方法中重写原对象中的相应的属性和方法即可。该方法可以使用$this指针
18、自动加载类
PHP专门提供了__autoload()函数,来自动加载所需的类。
在需要加载时,该函数会自动被调用,同时类名会以参数的形式传递给__autoload()函数
19、处理不存在方法调用
当调用类中一个不存在的方法将会产生致命错误,PHP提供了__call()方法可以对这种类型的错误进行处理。