php手册上的说明如下:
范围解析操作符(也可称作 Paamayim Nekudotayim)或者更简单地说是一对冒号,可以用于访问静态成员、方法和常量,还可以用于覆盖类中的成员和方法。
当在类的外部访问这些静态成员、方法和常量时,必须使用类的名字。
笔者写了下面一个例子
class Example{
const HELLO_WORLD = 'hello world';
private static $test;
public function test()
{
self::$test = self::HELLO_WORLD;
echo self::$test;
}
}
Example::test();
类名::方法名 这个方法并不是一个静态的方法,为何会这样呢
经过反复的查找资料得知,以上的方式是php4的写法,向下兼容而已
::是静态访问方式,只和类本身相关而和类对象没有关系
在PHP5以后,就引入了static public function func(){}这种方式声明,所以如果在PHP5上,并且报错机制是比较全的话,直接调用一个没有static声明的方法的时候,就会提示一个notic了