qq_花开花谢_0
不使用self::,使用static::自我还有另一个方面:这是值得一提的。烦人self::指在定义点而不是在执行点的范围。..使用两个方法来考虑这个简单的类:class Person{
public static function status()
{
self::getStatus();
}
protected static function getStatus()
{
echo "Person is alive";
}}如果我们打电话Person::status()我们会看到“人还活着”。现在,考虑一下当我们创建一个继承自此的类时会发生什么:class Deceased extends Person{
protected static function getStatus()
{
echo "Person is deceased";
}}呼叫Deceased::status()我们希望看到“Person is Death”,但是我们看到的是“Person是活着的”,因为在调用时,范围包含了原始的方法定义。self::getStatus()被定义了。PHP5.3有一个解决方案。这个static::解析操作符实现“后期静态绑定”,这是一种表示它绑定到被调用类的作用域的奇特方式。换行status()到static::getStatus()结果和你所期望的一样。在较早版本的PHP中,您必须找到一个假象才能做到这一点。看见PHP文档所以要回答这个问题而不是问.。$this->引用当前对象(类的实例),而static::指的是一个类