PHP $this,self,static 的区别

Posted i金少

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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

  

以上是关于PHP $this,self,static 的区别的主要内容,如果未能解决你的问题,请参考以下文章

php中static和self调用静态方法区别

PHP中new static() 和 new self() 的区别

php中const和static的区别和联系

PHP面向对象关键词static self

self , static 都是何方神圣?

php static 和self区别