php中類的self和static的區別以及self和$this->的區別

1.self和static的區別

self和static都可以表示指向當前類,但static是php5.3版本之後纔有的,強調的是延遲靜態綁定,怎麼實現延遲靜態綁定呢?請看下面代碼。

<?php
class a {
    public static function aa () {
        self::bb();
    }
    protected static function bb () {
        echo 'bb';
    }
}
class b extends a {
    protected static function bb () {
        echo 'cc';
    }
}
b::aa();  // 輸出的卻是bb,這與繼承原理相反

所以這時候需要用到static延遲靜態綁定

<?php
class a {
    public static function aa () {
        static::bb();
    }
    protected static function bb () {
        echo 'bb';
    }
}
class b extends a {
    protected static function bb () {
        echo 'cc';
    }
}
b::aa(); // 輸出cc

2.self和$this的區別

1.self代表類,$this代表對象

2.能用$this的地方一定使用self,能用self的地方不一定能用$this 靜態的方法中不能使用$this,靜態方法給類訪問的。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章