static:: 和 $this-> 之间的区别以及我应该使用哪种语法?



我有一些代码:

class a {
    public static function getCl() {
        echo __CLASS__;
    }
    public function test() {
        static::getCl();
    }
}
class b extends a {
    public static function getCl() {
        echo __CLASS__;
    }
}
$testClass = new b();
$testClass->test();

和这个结果:b。然后我尝试一下:

class a {
    public static function getCl() {
        echo __CLASS__;
    }
    public function test() {
        $this->getCl();
    }
}
class b extends a {
    public static function getCl() {
        echo __CLASS__;
    }
}
$testClass = new b();
$testClass->test();

这个结果仍然是b。我已经知道static ::和self ::之间的不同之处,但是有人可以向我展示static ::和$ this->在我的代码中的区别。我应该使用哪一个?

您的上下文将产生相同的结果。

这是关于两者的简单描述。

static : - 引用pHP 5.3.0的晚期静态绑定,PHP实现了一个称为静态粘合剂的功能,该功能可用于在静态继承的上下文中引用称为类的功能。p>使用该函数所属的类解决了对当前类的静态引用,例如self ::或,如定义的位置:

虽然晚期静态绑定试图通过引入一个引用最初在运行时称为类的关键字来解决该限制。基本上,一个关键字可以使您可以从父类方法中参考子类。决定不引入一个新的关键字,而是使用已经保留的静态。

$ this : - 引用当前对象。

进入对象函数后,您可以完全访问其变量,但是要设置它们,您需要比仅使用要使用的变量名称更具体。要正确指定您要与本地变量一起工作,您需要使用特殊$此变量,PHP总是设置为您当前正在使用的对象。

相关内容

最新更新