很多好几年工作经验的PHP工程师,对PHP面向对象中 static:: 、self::、parent::、$this-> 的定义和使用都不清晰,特做详细梳理;
- static:: 可以访问全局作用域,即继承链上的所有静态成员和常量;支持向下子类访问、向上父类访问、当前本类访问、支持重写覆盖;但“非静态成员”无法访问;
- self:: 可以访问所在类的静态成员和常量;但非静态成员无法访问;
- parent:: 可以访问父类的静态成员和常量;但非静态成员无法访问;
- $this-> 可以访问继承链上的非静态成员;支持向下子类访问、向上父类访问、当前本类访问、支持重写覆盖;但“静态成员”和“常量”无法访问,注意$this->后的非静态属性,不能加$符号;错误示例:$this->$aa 正确示例:$this->aa;
static 后面不加双“::”号,那么就是定义一个静态成员;静态成员;
下图是我浏览了一个关于stitic使用示例的图,方便大家理解;其余的就不上图了;