有点难以谷歌“::”,因为它忽略了这些符号!
所以以一种粗鲁的方式,我试图找出::适合PHP的地方。
由于
答案 0 :(得分:5)
这意味着静态方法。
Product::get_matching_products($keyword);
意味着get_matching_products
是Product
答案 1 :(得分:4)
双冒号是一个静态方法调用。
以下是静态方法的PHP手册页:http://php.net/manual/en/language.oop5.static.php
答案 2 :(得分:2)
以简单的方式说,您可以从代码的任何部分调用静态方法或变量,而无需实例化类。为了达到这个目的,你使用::
这是帮助您完成手册的示例
<?php
function Demonstration()
{
return 'This is the result of demonstration()';
}
class MyStaticClass
{
//public static $MyStaticVar = Demonstration(); //!!! FAILS: syntax error
public static $MyStaticVar = null;
public static function MyStaticInit()
{
//this is the static constructor
//because in a function, everything is allowed, including initializing using other functions
self::$MyStaticVar = Demonstration();
}
} MyStaticClass::MyStaticInit(); //Call the static constructor
echo MyStaticClass::$MyStaticVar;
//This is the result of demonstration()
?>
答案 3 :(得分:2)
:: vs. - &gt;,self vs. $ this
对于那些对 :: 和 - &gt; 或自我和 $ this 之间的区别感到困惑的人,我提出以下规则:
如果引用的变量或方法声明为const或static,则必须使用 :: 运算符。
如果引用的变量或方法未声明为const或static,则必须使用 - &gt; 运算符。
如果要从类中访问const或静态变量或方法,则必须使用自引用 self 。
如果要从非const或静态的类中访问变量或方法,则必须使用自引用变量 $ this 。