->
用来访问实例的成员,一般左面是一个类实例(或者$this
), 右面是一个函数或者属性. 箭头也可以通过类实例来访问静态函数.
::
用来访问静态成员、常量,访问父类中的成员. 一般左面是一个类名,或self
、parent
、static
关键字, 右面是一个静态函数、静态属性、常量.
property;//访问实例的函数print $xxoo->func();//也可以借助实例来访问静态成员//访问函数要用箭头,属性要用双冒号print $xxoo->staticFunc();print $xxoo::$staticProperty;//如果不借助实例,那就直接用类名加双冒号print A::staticFunc();print A::constValue;//静态属性要加美元符号print A::$staticProperty;//继承类Aclass B extends A{ //覆盖父类的属性 public $property = "covered-properties\n"; //覆盖父类的静态属性 static public $staitcProperty = "covered-staitcProperties\n"; //覆盖父类的函数 public function func() { //访问自己的属性 print $this->property; //访问从父类继承来的静态属性 print self::$staticProperty; //访问自己的(静态)函数 print $this->staticFunc(); //强制指定访问父类(而不是自己)的函数 print parent::func(); } //覆盖父类的静态函数 static public function staticFunc() { //因为没有$this, 所以用self访问自己的静态属性 print self::$staitcProperty; }}//运行一下上面的例子$xxoo = new B;$xxoo->func();B::staticFunc();
总结:
箭头:通过实例访问属性、(静态)函数 双冒号:通过类名或self
、parent
、static
关键字,访问常量、静态属性、静态函数 PHP5.3新增后期静态绑定
功能,和双冒号以及static
关键字有关。