PHP中的::和 - >之间的区别

sdk*_*ldf 15 php static scope

我总是看到严肃项目中的人们使用::无处不在,而且 - >偶尔只在当地环境中使用.

我只使用 - >我自己,并且在我需要一个类之外的静态值的情况下永远不会结束.我是个坏人吗?

据我了解,唯一->不起作用的情况是我尝试以下时:

class StaticDemo {  
    private static $static  
}

$staticDemo = new StaticDemo( );

$staticDemo->static; // wrong  
$staticDemo::static; // right
Run Code Online (Sandbox Code Playgroud)

但是当我不通过简单的公共方法调用时,我是否错过了一些编程正确性::

或者只是这样我可以在不创建实例的情况下调用方法?

Ada*_*son 12

不实例化类时使用双冒号

class StaticDemo {...};
StaticDemo::static
Run Code Online (Sandbox Code Playgroud)

如果你实例化,使用 - >

class StaticDemo {...};
$s = new StaticDemo();
$s->static;
Run Code Online (Sandbox Code Playgroud)

这将在http://php.net/manual/en/language.oop5.patterns.php中进一步解释

  • 你还没有回答他是不是一个坏人.我个人认为这是首要问题.您只是回答了次要问题.:P (13认同)
  • 不是一个坏人,至少没有那个在没有解释的情况下向我投票的人那么糟糕.我该如何改进? (3认同)

Tim*_*thy 8

::用于引用类的静态属性或方法. - >用于引用实例属性和方法.你不会错过任何编程的正确性,如果你一个坏人,那么它不是因为这个.您使用哪一个取决于您的课程的目的以及如何编写.但是,PHP直到最近才有名称空间这么多人将其代码封装在静态类中以模拟名称空间以避免命名冲突.您可能会看到执行此操作的代码.