> myMethod的(); vs MyClass :: myMethod();

可能重复:
在PHP中,::(双冒号)和 - >(箭头)有什么区别?

我只是对我看来是两种不同的方式来做同样的事情有个简单的问题。 如果语法不同,请解释它们是什么。

我们假设我们有一个名为MyClass的类,它有一个名为myMethod的方法。 它们中的内容可能不相关,因为我们只是从另一个文件中调用它们。

这是我知道的第一种方式(可能有其他方式 - 这些就是我所知道的):

$myvar = new MyClass();
$myvar->myMethod();

第二种方法:

MyClass::myMethod();

如果还有其他方法,特别是更好的方法,尽一切办法详细说明它们,但这里的主要问题是这两个例子之间的区别。

谢谢!


使用MyClass::myMethod(); 用静态方法。 和$myvar->myMethod(); 在其他情况下。

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


第一个在对象上执行一个方法。 第二个在类级别执行一个方法(一个classmethod)。

它们都是不同的东西。


$myObj = new MyClass();
$myObj->myMethod();

这是一个实例方法调用。 您使用刚在上一行中创建的对象引用(在方法定义中以$this传递)调用它。

MyClass::myMethod();

这是一个静态方法调用。 您按原样调用它,没有任何参考。 只有static方法可以这样调用。


正如在注释中指出的那样,可以用:: syntax调用实例方法,但以任何方式使用$this都会产生运行时错误。 这也是你通常不会做的事情。 我想不出有什么用处。 所以坚持以上。

链接地址: http://www.djcxy.com/p/58015.html

上一篇: >myMethod(); vs MyClass::myMethod();

下一篇: What is the difference between :: and