谁能告诉之间的差异mysqli->commit
和mysqli::commit
?
在头这个网页是mysqli::commit
,但在例子他们使用mysqli->commit
。
谁能告诉之间的差异mysqli->commit
和mysqli::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->提交,mysqli的是库MySQLi中的mysqli一个实例::提交调用静态方法
mysqli->提交的是一个公共函数和mysqli的::提交是静态函数两者的mysqli类的PHP对象符号。
通常在php.net文档::意味着这个类有一个方法。 对于使用之实践必须遵循这个例子,使用 - > sintax。
的->
操作者为对象的属性 。
该::
运算符是类属性 。