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

2022-08-30 15:29:53

谁能分辨出 和 之间的区别?mysqli->commitmysqli::commit

此页面中的标头是 ,但在示例中,它们使用 。mysqli::commitmysqli->commit


答案 1

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

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

请考虑以下类:

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

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

您可以使用以下命令调用该函数:buzz()->

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

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

FooBar::fizz();

此外,当我们讨论静态成员与实例化成员之间的区别时,您不能使用来引用静态成员中的当前实例。您可以使用 self(无前导 )来表示当前类,或者如果您想要引用类,或者如果您有幸使用 PHP 5.3.0 静态(允许后期静态绑定),则可以使用父类。$this$


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

FooBar::buzz

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

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

答案 2

::用于静态方法

->用于对象的方法(如果您已有实例)。


推荐