PHP $this,self,static 的区别
在PHP中 $this->,self::,static:: 都可以用来调用变量或方法,其中 $this 指向当前对象,用于访问非静态变量和非静态方法(静态变量和方法认为是类的元素);
self和static都是用于访问静态变量和方法,他们区别在于,self 是访问self所在类,而static也叫延迟绑定,访问的是被当前子类的静态变量和方法,请看以下例程:
abstract class A
{
protected $strA = 'this is $strA in class A ';
protected static $strB = 'this is static $strB in class A';
public function show_info()
{
echo "called class::";echo get_called_class();echo PHP_EOL;
echo $this->strA;echo PHP_EOL;
echo self::$strB;echo PHP_EOL;
echo static::$strB;echo PHP_EOL;
}
}
class B extends A
{
protected static $strB = 'this is static $strB in class B';
public function show_info()
{
parent::show_info();
}
}
$objB = new B();
$objB->show_info();
输出:
called class::B this is $strA in class A this is static $strB in class A this is static $strB in class B

浙公网安备 33010602011771号