5

可能重复: PHP 中 ::(双冒号)和 ->(箭头)有什么区别?
参考 - 这个符号在 PHP 中是什么意思?

我对 PHP 很满意,但只是程序性的。所以我决定冒险学习面向对象。我掌握了它,并且非常喜欢它。

在 PHP.net 上,我一直将面向对象视为mysqli::query.

但是,我看到的每个示例都使用mysqli->query了我一直使用的示例。

今天,我碰到一个实际看到::用在课堂上的例子。

::所以现在,我的问题是,和之间有区别->吗?"就像和之间的区别'吗?

4

2 回答 2

8

::用于调用静态方法,->用于实例方法

于 2012-12-16T01:07:44.243 回答
4

::是“范围解析运算符”(也恰当地命名为 Paamayim Nekudotayim),通常用于执行静态(这意味着您将在类本身的上下文中调用方法,而不是对象)方法调用。但是,此规则也有例外,例如尝试从覆盖的方法调用父方法:

parent::foo(); // uses same context as when the method itself was called

它还允许您引用类的静态属性,例如静态属性和常量。

ClassName::FOO; 
ClassName::$property = "bar";

但是, ->用于引用实际对象实例中的属性或方法,并且始终需要在运算符左侧的对象实例(例如 $this)。

于 2012-12-16T01:21:47.067 回答