PHP对象的'::'和'->'有什么区别?

时间:2018-09-04 17:37:01

标签: php

对于对象的不同约定以及访问它们的函数和变量,我有些困惑。

当我从对象或对象内部访问某些内容时,我知道如何使用->。当我在可以使用parent::itemclassname::item的对象中时,我也知道相同的内容,但是除了使用它们之外,我对此一无所知。有人会为我分解这些内容,并解释何时和为什么我应该使用一种方法而不是另一种方法吗?

class mammal{
    public age = 7;
}

class dog extends mammal{
    public dogSpecificVal;

    public function getAge(){
        return $this->age;
        return $parent::age;
        return $mammal::age;
    }
}

$clifford = new dog();
$cliffordAge = $clifford->getAge();

在该示例中,我使用了三种不同的方法来获取年龄。它们都可以工作,但是我不知道为什么或何时应该使用另一个。

1 个答案:

答案 0 :(得分:0)

  

在类方法内,可以使用->(对象操作符):$ this-> property(其中property是属性的名称)来访问非静态属性。静态属性通过使用::(Double冒号):self :: $ property访问。有关静态和非静态属性之间差异的详细信息,请参见静态关键字。

http://php.net/manual/en/language.oop5.properties.php

http://php.net/manual/en/language.oop5.visibility.php