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,靜態方法給類訪問的。