首页 > 开发 > MySQL > 正文

php mysqli中->和::有什么区别?

2017-09-08 09:11:37  来源:网友分享

我看到有两种不同的写法,不知道这二者有什么区别?

mysqli->commitmysqli::commit

解决方案

->用来访问实例的成员,一般左面是一个类实例(或者$this), 右面是一个函数或者属性. 箭头也可以通过类实例来访问静态函数.

::用来访问静态成员、常量,访问父类中的成员. 一般左面是一个类名,或selfparentstatic关键字, 右面是一个静态函数、静态属性、常量.

<?php// 费了我好大功夫, 把这些都总结到一个例子里面了// PHP5.3 PHP5.4 PHP5.5 测试通过class A{    //类常量    const constValue = "constValue\n";	//类属性    public $property = "properties\n";    //静态属性    static public $staticProperty = "staticProperty\n";    //普通函数    public function func()    {    }    //静态函数    static public function staticFunc()    {    }}$xxoo = new A;//访问实例的属性print $xxoo->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();

总结:
箭头:通过实例访问属性、(静态)函数
双冒号:通过类名或selfparentstatic关键字,访问常量、静态属性、静态函数

http://php.net/manual/zh/language.oop...
PHP5.3新增后期静态绑定功能,和双冒号以及static关键字有关,这个我正在学习中.....