在php中self与$this的分别

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在php中self与$this的分别相关的知识,希望对你有一定的参考价值。

在访问php类中的成员变量或方法时,如果被引用的变量或者方法被声明成const(定义常量)或者static(声明静态),那么就必须使用操作符::

<?php
    class Car{
        const CARNAME = ‘audi‘;
        public static function getName(){
            return self::CARNAME;
        }
    }
    echo Car::carName;  //audi
    echo Car::getName();  //audi

?>

反之如果被引用的变量或者方法没有被声明成const或者static,那么就必须使用操作符->

<?php
    class Car{
        public $carName = ‘audi‘;
        public function getName(){
            return $this->carName;
        }
    }
    $car = new Car();
    echo $car->carName;  //audi,->后面不需要加$符号
    echo $car->getName();//audi,->后面不需要加$符号
?>

另外,如果从类的内部访问const或者static变量或者方法,那么就必须使用自引用的self,

反之如果从类的内部访问不为const或者static变量或者方法,那么就必须使用自引用的$this。

结论 : self与$this的功能极其相似,但二者又不相同。$this不能引用静态成员和常量。self更像类本事,而$this更像是实例本身。

以上是关于在php中self与$this的分别的主要内容,如果未能解决你的问题,请参考以下文章

PHP 类或 PHP 方法中 self 和 $this-> 的区别在哪里?

关于php中self与this parent关键字的用法

PHP5 $this self parent static的区别

self this

php this self 用法与区别

php中static self区别与总结