繁体   English   中英

PHP MySQLi OOP中“ - >”和“::”之间的区别

[英]Difference between “->” and “::” in PHP MySQLi OOP

谁能说明mysqli->commitmysqli::commit之间的区别?

这个页面中的标题是mysqli::commit ,但在示例中它们使用mysqli->commit

->在引用对象的成员时使用。

::范围解析运算符 ,用于引用类的静态成员。

考虑以下课程:

class FooBar {
    public static function fizz() {
        echo "Fizz";
    }

    public function buzz() {
        echo "Buzz";
    }
}

你可以使用->调用函数buzz()

$myFooBar = new FooBar();
$myFooBar->buzz();

但是会使用::来调用functon fizz() ,因为它是一个静态成员(一个不需要调用类实例的成员):

FooBar::fizz();

此外,在我们讨论静态成员与实例化成员之间的区别时,您不能使用$this来引用静态成员中的当前实例。 您可以使用self代替(没有前导$ ),它指的是当前类,或parent ,如果你想引用父类,或者如果你有PHP 5.3.0工作的乐趣, static (它允许后期静态绑定)。


文档使用::来引用类中的函数,因为标题中的类名不是类的实例。 仍然使用相同的示例,引用函数buzz()的文档条目将使用以下标头:

FooBar::buzz

但除非文档指定它是静态成员,否则您需要在实例上使用->来调用它:

$myFooBar = new FooBar();
$myFooBar->buzz();

::用于静态方法

->如果已有实例,则用于对象的方法。

如果您有一个对象的实例,则使用 - >来引用此实例中的方法:

$foo = new Foo();
$foo->bar();

使用::调用静态方法而不必创建对象的实例:

Foo::bar();

静态方法不能通过$this引用它的当前实例,但可以使用self引用自身(当前类)。

::指定一个静态(类)方法,该方法可调用而无需实际实例化对象。 ->指定一个实例(对象)方法,您需要一个实例化的对象才能使用。

因此,举例来说,如果你有一个变量$m这是类的一个实例mysqli ,你会打电话commit$m->commit()或者你可以说静态调用commit MySQLi::commit()

::访问类的函数而不实例化对象。

->运算符用于对象属性

::运算符用于类属性

在mysqli-> commit中,mysqli是MySQLi的一个实例,在mysqli :: commit中调用一个静态方法

mysqli-> commit是一个公共函数,mysqli :: commit是一个静态函数,两个是mysqli类的php对象表示法。

通常在php.net文档中::表示此类具有该方法。 对于实际使用,您必须遵循示例,因此请使用 - > sintax。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM