关于php:使用self而不是this


using self instead of this variable

本问题已经有最佳答案,请猛点这里访问。

我正在读一本PHP书籍,发现了以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
class Employee {
        static public $NextID = 1;
        public $ID;

        public function _ _construct( ) {
                $this->ID = self::$NextID++;
        }

        public function NextID( ) {
                return self::$NextID;
        }
}

这里为什么用cx1〔0〕,我可以这样用吗?

1
$this-ID = $this->$NextID++;


因为在PHP中,必须使用self引用静态函数。

关于stackoverflow已经有了一个解释:参见这里


当一个类被静态地称为ie. ClassName::someMethod()时,没有该类的"实例"。

由于$this引用了类的实例,$当静态使用类时,这将不存在。(所以$this只在您使用$var = new ClassName()创建类的对象时可用)

self指的是类(不是对象),所以在静态类中,可以使用self::..指的是类中的属性或方法。