В чем разница между -> и :: в PHP? - PullRequest
3 голосов
/ 26 ноября 2009

Эта штука давала мне покоя, и я нигде не могу ее найти!

В чем разница при использовании классов в php между :: и ->

Позвольте мне привести пример.

Представьте себе класс с именем MyClass, и в этом классе есть функция myFunction

В чем разница между использованием:

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

или

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

Спасибо

Ответы [ 4 ]

11 голосов
/ 26 ноября 2009
MyClass::myFunction();  // static method call

$myclass->myFunction(); // instance method call
3 голосов
/ 26 ноября 2009

"::" для вызова статических методов в классе. Итак, вы можете использовать:

MyClass::myStaticFunction()

но не:

MyClass->myStaticFunction()
2 голосов
/ 26 ноября 2009

, как указано, "::" для статических вызовов методов, тогда как "->" для вызовов, например, методов

за исключением случаев использования 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();
0 голосов
/ 26 ноября 2009
class MyClass {
  static function myStaticFunction(...){
  ...
  }

}

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

MyClass::myStaticFunction();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...