通过 - >访问类方法有什么区别?并通过::?
答案 0 :(得分:6)
答案 1 :(得分:4)
::
用于访问静态方法或属性,因此您不必实例化包含类的对象。
->
用于访问实例化对象的方法或属性。
答案 2 :(得分:2)
使用->
表示基于实例的访问方法(它保留对象的状态,例如私有/公共变量集)。
::
是一个静态方法,意味着如果对象已初始化或尚未初始化,则它没有条形,但这些方法与此对象有关。
想象如下:
class Mustang
{
var $gallons = 12; // gallons
public function getFuel()
{
return $this->gallons;
}
public static function getEngine()
{
return "V8";
}
}
$mustang = new Mustang(); // creating an instance
echo $mustang->getFuel(); // retrieve the fuel (instance, _this_ mustang)
echo Mustang::getEngine(); // echo a stat about Mustangs in general (static)
如果你有一个“野马”的实例,每个实例都可以(假设)有一定量的燃料(这是基于实例的,可以使用->
访问)。
如果你想要一些仍然属于野马的东西,但对特定实例本身没有任何限制,你会引用静态方法(在这种情况下,所有野马都有一个V8,在这种情况下象征着{{1} })。
答案 3 :(得分:1)
弗朗索瓦所说的是正确的。 ::
运算符称为Scope Resolution Operator ....和(信不信由你)称为 paamayim-nekudotayim 。在访问类的静态,常量和重写成员时使用它。我强调类,因为它不用于特定的对象。您可以将范围解析运算符视为类本身的元;它对自己及其父母起作用。 (考虑一下,类常量不属于任何特定对象,因此您不会使用->
这将我们带到了什么是->
?它用于操作对象而不是类。创建特定对象时,可以使用此运算符访问其属性和方法。例如:
$john = new User(); //create the object
$john->age = 10; //accessing an object property
$age = $john->getAge(); //accessing an object method