一张图轻松记住 PHP 的类以及 private 和 protected 的区别

上图概要的说了下 PHP 类的特性,类的方法同属性类似。

图中 B 类继承自 A 类,B 是 A 的子类,$x 和 $y 都是 B 的实例化对象。

1. 原型引用:【A::    、 B::   】,仅限 public static 属性和方法

2. 实例引用:【$x-> 、$y-> 】,仅限 public 属性和 public 方法以及 public static 方法

3. 关于 self:: 和 parent:: (类引用)

  self::  当前方法所属的类

  parent:: 父类

  如果 self:: 后面的属性或者方法未在当前类中定义,会尝试用 parent:: 替代 self::

  self:: 和 parent:: 后面只能跟方法名或静态属性

4. 关于 $this (对象引用)

  $x->f () 中的 $this 是 $x。

  $y->f () 中的 $this 是 $y。

  $this-> 后面可以是动态属性以及动态或静态方法。

5. 关于 static::

  static:: 引用当前使用的类,类似 $this,但可以在未实例化的类中使用,在已实例化对象中可以理解成等同于 $this

6. 关于 static

  static 标识的属性只能通过 self:: 、parent::、static:: 、类名::静态引用,不能通过 $this-> 对象引用

6. 关于 public 、protected 、private

  public : 可以在任何地方引用

  protected : 只能在类中引用,$this-> 、parent::

  private :   只能在本类中引用,$this->、self::