简单易懂 —— this、self、static 的区别
简介
如果是刚入门不久或较少比较久未使用者,往往比较容易搞混这三者之间的关系,网上的文章五花八门,不够简洁
在接下来的文章里,将省去干扰与花里胡哨的东西
读这文章需要理解的基本知识:PHP 继承、封装、多态
this
英文解释:这,这个
当一个方法在类定义内部被调用时,有一个可用的伪变量 $this。$this 是一个到主叫对象的引用(通常是该方法所从属的对象,但如果是从第二个对象静态调用时也可能是另一个对象)。
this 就是表示当前对象,从当前对象依次往上找,不存在或无权限则报错
self
英文解释:自己
使用 self:: 或者 CLASS 对当前类的静态引用,取决于定义当前方法所在的类
从 self::test
使用的『类』依次往上找 test
(重写优先),不存在或无权限则报错
在使用 self::test
时就得保证 test
是存在滴
static
英文解释:静态
该功能从语言内部角度考虑被命名为“后期静态绑定”。“后期绑定”的意思是说,static:: 不再被解析为定义当前方法所在的类,而是在实际运行时计算的。也可以称之为“静态绑定”,因为它可以用于(但不限于)静态方法的调用。
运行时,static::test
从最后的子『类』依次往上找 test
(子类优先),不存在或无权限则报错国
在使用 static::test
时 test
可以不存在,运行时 test
存在即可
本作品采用《CC 协议》,转载必须注明作者和本文链接
推荐文章: