PHP与::和 - 之间的区别

时间:2014-01-20 09:24:43

标签: php

我正在寻找这个问题的答案,但谷歌到目前为止没有帮助。

PHP手册总是说明mysqli :: prepare,但在代码中我总是要使用mysqli-> prepare()。有没有人知道两种写作类型之间的区别以及何时可以使用哪种方式?

1 个答案:

答案 0 :(得分:1)

::用于在类上调用静态方法:

Foo::bar();

->用于在类的对象上调用实例方法:

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

两者完全不同。

手册始终引用符号Class::method中的方法的原因是该方法被定义为类的一部分,并且符号$obj->method更加令人困惑,因为{{1} }是任意名称的变量。通过它们的“静态”类名来引用方法是一种惯例,使它明确地说明了你所讨论的类的哪种方法。您知道是通过其签名中是否存在关键字$obj来静态地或在对象实例上调用该方法:

static
     

http://php.net/manual/en/datetime.createfromformat.php

静态方法,这样调用:

public static DateTime DateTime::createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] )
       ^^^^^^

可是:

$foo = DateTime::createFromFormat(...);
     

http://php.net/manual/en/datetime.add.php

非静态,调用实例方法:

public DateTime DateTime::add ( DateInterval $interval )