PHP中常用关键字public, private, protected, static...

PHP中常用的关键字:public, private, protected, static, interface, implements, final

1.public、protected、private

对属性或方法的访问控制,是通过在前面添加关键字 public(公有),protected(受保护)或 private(私有)来实现的。

public     被定义为公有的类成员可以在任何地方被访问。
protected  被定义为受保护的类成员则可以被其自身以及其子类和父类访问。
private    被定义为私有的类成员则只能被其定义所在的类访问。

2.static

静态变量

①静态变量仅在局部作用域中存在,当程序执行离开此作用域时,静态变量的值不丢失;
②static的作用就是能够实现变量或者方法在类中不需实例化的情况下调用;
③静态变量必须在声明为静态变量时初始化,否则静态变量将失去意义。
④静态属性只能被初始化为文字或常量,不能使用表达式

由于静态方法不需要通过对象即可调用,所以伪变量 $this 在静态方法中不可用;
静态属性不可以由对象通过 -> 操作符来访问。
静态延迟绑定

静态延迟绑定跟静态变量以及类静态方法等没有任何联系,静态延迟绑定中的"延迟绑定"是指 static:: 不再被解析为当前方法所在的类,而会被解析成运行时所计算出来的类。

class A {
    public static function who() {
        echo __CLASS__;
    }
    public static function test() {
        static::who(); // 后期静态绑定从这里开始
    }
}

class B extends A {
    public static function who() {
        echo __CLASS__;
    }
}

B::test();  //输出B

注意:(详情移步手册 后期静态绑定 )
①使用 self:: 或者 __CLASS__对当前类的静态引用,取决于定义当前方法所在的类;
②在非静态环境下,所调用的类即为该对象实例所属的类。由于 $this-> 会在同一作用范围内尝试调用私有方法,而 static:: 则可能给出不同结果。另一个区别是 static:: 只能用于静态属性;
③后期静态绑定的解析会一直到取得一个完全解析了的静态调用为止。另一方面,如果静态调用使用 parent:: 或者 self:: 将转发调用信息。

3.interface、implements

interface
①接口是通过 interface 关键字来定义的,就像定义一个标准的类一样,但其中定义所有的方法都是空的。
②接口中定义的所有方法都必须是公有,这是接口的特性。

implements

①要实现一个接口,使用 implements 操作符。
②类中必须实现接口中定义的所有方法,否则会报一个致命错误。
③类可以实现多个接口,用逗号来分隔多个接口的名称。
④实现多个接口时,多个接口的方法名不能重名
⑤接口也可以继承,通过extends操作符
⑥类要实现接口,必须使用和接口中所定义的方法完全一致的方式(包括方法名称、参数数量和类型等都必须一致)。否则会导致致命错误。

5.final

final只能够用来修饰class与function
class使用了final之后就不能够被继承,function使用了final之后不能在子类中被覆盖

你可能感兴趣的:(PHP中常用关键字public, private, protected, static...)