有什么区别 - >和::在PHP中?

时间:2009-11-26 15:03:25

标签: php class oop

这件事一直困扰着我,我无法在任何地方找到它!

在php和::& - >

之间使用类时有什么区别

让我举个例子。

想象一个名为MyClass的类,在这个类中有一个函数myFunction

使用之间有什么区别:

MyClass myclass = new MyClass
myclass::myFunction();

MyClass myclass = new MyClass
myclass->myFunction();

谢谢

4 个答案:

答案 0 :(得分:11)

MyClass::myFunction();  // static method call

$myclass->myFunction(); // instance method call

答案 1 :(得分:3)

“::”用于调用类上的静态方法。所以,你可以使用:

MyClass::myStaticFunction()

但不是:

MyClass->myStaticFunction()

答案 2 :(得分:2)

如上所述,“::”用于静态方法调用,而“ - >”例如是方法调用

除了使用parent ::访问基类中的函数时,其中“parent ::”可以用于静态和非静态父方法

abstract class myParentClass
{
   public function foo()
   {
      echo "parent class";
   }
}

class myChildClass extends myParentClass
{
   public function bar()
   {
      echo "child class";
      parent::foo();
   }
}

$obj = new myChildClass();
$obj->bar();

答案 3 :(得分:0)

class MyClass {
  static function myStaticFunction(...){
  ...
  }

}

//$myObject=new MyClass(); it isn't necessary. It's true??

MyClass::myStaticFunction();