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,静态方法给类访问的。