面试题 / 4 / 5 / 创建于 3年前
如题
self指当前类,$this指当前对象
如果是当前类的静态属性和方法,即不需实例化即可调用的可以使用self调用
如果是涉及到实例化后才可以获取的属性和方法使用$this调用
class tt { private $a = 'a parent'; private static $b = 'b parent'; const CC = 'cc parent'; } class Test extends tt{ private $a = 'a'; private static $b = 'b'; const CC = 'cc'; public function run(){ echo $this->a; // a // $this->$b , $this->CC // 报错 // echo self::$a; // 低版本可以这样用,高版本不行,具体哪个版本改的记不清了 echo self::$b; // b echo self::CC; // cc // static::$a; // 报错 echo static::$b; // b echo static::CC; // cc echo parent::CC; // cc parent } }
那么问题来了,self 和static 又有啥区别呢?
静态延迟绑定
我要举报该,理由是:
self指当前类,$this指当前对象
如果是当前类的静态属性和方法,即不需实例化即可调用的可以使用self调用
如果是涉及到实例化后才可以获取的属性和方法使用$this调用