Final关键字的应用在PHP5中新增了final关键字,它可以加在类或类中方法前。但不能使用final标识成员属性,虽然final有常量的意思,但是在PHP中定义常量是使用define()函数来完成的。在类中将成员属性声明为常量也有专门的方式,final关键字作用如下.使用final标识的类,不能被继承 在类中使用final标识的成员方法,在子类中不能被覆盖。下面例子声明一个MyClass类并使用final关键字标识,MyClass类就是最终的版本。不能有子类,也就不能对它进行扩展。
Static关键字的使用 使用static关键字可以将类中的成员标识为静态的,既可以用来标识成员属性,也可以用来标识成员方法。普通成语昂作为对象属性存在,已Person类为例,如果在Person类中有一个”$country=’china’”的成员属性,任何一个Person类的对象都会拥有自己的一份$country属性,对象之间不会干扰。而static成员是作为整个类的属性存在,如果将$country属性使用static关键字标识,则不管通过Person类创建多少个对象,这个static成员总是唯一存在的,在多个对象之间共享的。因为使用static标识的成员是属于类的,所以与对象实例和其他的类无关。类的静态属性非常类似于函数的全局变量。类中的静态成员是不需要对象而使用雷鸣来直接访问的,格式如下:类名::静态成员属性名; //在类的外部和成员方法中都可以使用这种方式访问静态成员属性类名::静态成员方法名(); //在类的外部和成员方法中都可以使用这种方式访问静态成员方法在类中声明的成员方法中,也可以使用关键字”self”来访问其他静态成员。因为静态成员是属于类的,而不属于任何对象,所以你不能用$this来引用它,而在PHP中给我们提供的self关键字,就是在类的成员方法中用来代表本类的关键字.格式如下:Self::静态成员属性名; //在类的成员方法中使用这种方式访问奔雷中的静态成员属性Self::静态成员方法名(); //在类的成员方法中使用这种方式访问本类中的静态成员方法如果在类的外部访问类中的静态成员,可以使用对象引用和使用类名访问,但通常选择使用类名来访问。如果在类内部的成员方法中访问其他的静态成员,通常使用self的形式去访问,最好不要直接使用类名称。在线面的例子中声明一个MyClass类,为了让类中的count属性可以在每个对象中共享,将其声明为static成员,用来统计通过MyClass类一共创建了多少对象。getCount(); //通过对象也可以访问类中的静态成员方法,获取静态属性的值3 上例的MyClass类中,在构造方法内部和成员方法getCount()的内部,都使用self访问本累中使用static标识为静态的属性count,并在类的外部使用类名访问类中的静态属性。可以看到同一个类中的静态成员在每个对象中共享,每创建一个对象静态属性count就自增1,用来统计实例化对象的次数 另外在使用静态方法时需要注意,在静态方法中职能访问静态成员。因为非静态的成员必须通过对象的引用才能访问,通常是使用$this完成的。而静态的方法在对象不存在的情况下也可以直接使用类名来访问,没有对象也就没有$this引用,没有了$this引用就不能访问类中的非静态成员,但是可以使用类名或self在非静态方法中访问静态成员
Const关键字虽然const和static的功能不同。但使用的方法比较相似。在PHP中定义常量是通过调用define()函数来完成的,但要讲类中的成员属性定义为常量,则只能使用const关键字。将类中的成员属性使用const关键字标识为常量,其访问的方式和静态成员一样,都是通过类名或在成员方法中使用self关键字访问,也不能用对象来访问。标识为常量的属性是只读的,不能重新赋值,如果在程序中试图改变它的值,则会出现错误。所以在声明常量时一定要给初值,因为没有其他方式后期为常量赋值。注意,使用const声明的常量名称前不要使用”$”符号,而且常量名称通常都是大写的。在下面的示例中演示了类中如何声明常量,并在成员方法中使用self和在类外面通过类名来访问常量。”; //使用self访问常量,注意常量前不要加”$”} } Echo MyClass::CONSTANT.”
”; //在类外部使用类名称访问常量,也不要加”$”$class = new MyClass(); //通过类MyClass创建一个对象$class$class->showConstant(); //调用对象中的方法//echo $class::CONSTANT; //通过对象名称访问常量是不允许的。
Instanceof关键字使用这个关键字可以确定一个对象是类的实例、类的子类,还是实现了某个特定接口,并进行相应的操作。例如,假设希望了解名为$man的对象是否为类Person的实例:$man = new Person(); If($man instanceof Person){ Echo “$man是Person类的实例对象”;}在这里有两点值得注意,首先,类名没有任何定界符,使用定界符将导致语法错误。其次,如果比较失败,脚本将推出执行。Instanceof关键字在同时处理多个对象时特别有用,例如,你可能要重复地调用某个函数,但希望根据对象类型调整函数的行为。