【问题标题】:What is the difference between -> and :: in PHP?PHP 中的 -> 和 :: 有什么区别?
【发布时间】:2009-11-26 15:03:25
【问题描述】:

这件事困扰了我很久,我到处都找不到!

在php中使用类时 :: 和 -> 有什么区别

让我举个例子。

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

使用有什么区别:

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

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

谢谢

【问题讨论】:

    标签: php class oop


    【解决方案1】:
    MyClass::myFunction();  // static method call
    
    $myclass->myFunction(); // instance method call
    

    【讨论】:

    • 那么,myclass::myFunction(); 是否编译,如果编译,是什么意思?
    • 有道理,但你永远不会知道 PHP... :)
    【解决方案2】:

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

    MyClass::myStaticFunction()
    

    但不是:

    MyClass->myStaticFunction()
    

    【讨论】:

      【解决方案3】:

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

      使用 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();
      

      【讨论】:

        【解决方案4】:
        class MyClass {
          static function myStaticFunction(...){
          ...
          }
        
        }
        
        //$myObject=new MyClass(); it isn't necessary. It's true??
        
        MyClass::myStaticFunction();
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-01-10
          • 2018-11-18
          • 1970-01-01
          • 2016-03-20
          • 2012-03-08
          • 2011-03-10
          • 2022-12-13
          相关资源
          最近更新 更多