我正在寻找这个问题的答案,但谷歌到目前为止没有帮助。
PHP手册总是说明mysqli :: prepare,但在代码中我总是要使用mysqli-> prepare()。有没有人知道两种写作类型之间的区别以及何时可以使用哪种方式?
答案 0 :(得分:1)
::
用于在类上调用静态方法:
Foo::bar();
->
用于在类的对象上调用实例方法:
$foo = new Foo;
$foo->bar();
两者完全不同。
手册始终引用符号Class::method
中的方法的原因是该方法被定义为类的一部分,并且符号$obj->method
更加令人困惑,因为{{1} }是任意名称的变量。通过它们的“静态”类名来引用方法是一种惯例,使它明确地说明了你所讨论的类的哪种方法。您知道是通过其签名中是否存在关键字$obj
来静态地或在对象实例上调用该方法:
static
静态方法,这样调用:
public static DateTime DateTime::createFromFormat ( string $format , string $time [, DateTimeZone $timezone ] )
^^^^^^
可是:
$foo = DateTime::createFromFormat(...);
非静态,调用实例方法:
public DateTime DateTime::add ( DateInterval $interval )