【问题标题】:using self instead of this variable [duplicate]使用 self 而不是这个变量[重复]
【发布时间】:2013-11-25 18:18:53
【问题描述】:

我正在看一本php的书,发现了这段代码:

class Employee {
        static public $NextID = 1;
        public $ID;

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

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

这里为什么用self::$NextID++;可以这样用吗:

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

【问题讨论】:

    标签: php


    【解决方案1】:

    因为在 php 中你必须使用 self 来引用静态函数。

    stackoverflow 上也有解释:see here

    【讨论】:

    • 还要注意,在同一个类中使用$this调用静态方法是有效的。
    【解决方案2】:

    当一个类被静态调用ie. ClassName::someMethod() 时,没有该类的“实例”。

    由于$this 指的是类的实例,所以当你的类被静态使用时,$this 将不存在。 (所以 $this 仅在您使用 $var = new ClassName() 创建类的对象时可用)

    self 指的是类(而不是对象),因此在静态类中,您可以使用self::.. 来指代类中的属性或方法。

    【讨论】:

    • 不是$self 只是self,或者static
    猜你喜欢
    • 2021-06-05
    • 2020-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-21
    • 1970-01-01
    相关资源
    最近更新 更多