誰でも と の違いがわかります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();
しかし、これは static メンバー (クラスのインスタンスを呼び出す必要がないメンバー) であるため::
、 functon を呼び出すために使用します。fizz()
FooBar::fizz();
また、静的メンバーとインスタンス化されたメンバーの違いについて話している間、静的メンバー内の現在のインスタンスを参照するために使用することはできません。現在のクラスを参照する場合、または親クラスを参照する場合、または PHP 5.3.0 を使用する喜びがある場合(これにより、遅延静的バインディングが可能になります) を使用します。$this
self
$
parent
static
ドキュメントは::
、ヘッダーのクラス名がクラスのインスタンスではないため、クラス内の関数を参照するために使用します。同じ例を引き続き使用すると、関数を参照するドキュメント エントリbuzz()
は次のヘッダーを使用します。
FooBar::buzz
ただし、ドキュメントで静的メンバーであると指定されていない限り、->
インスタンスで使用して呼び出す必要があります。
$myFooBar = new FooBar();
$myFooBar->buzz();
::
静的メソッドに使用されます。
->
インスタンスがすでにある場合は、オブジェクトのメソッドに使用されます。
オブジェクトのインスタンスがある場合、 -> を使用してこのインスタンス内のメソッドを参照します。
$foo = new Foo();
$foo->bar();
:: を使用すると、オブジェクトのインスタンスを作成せずに静的メソッドを呼び出します。
Foo::bar();
静的メソッドは、 を介して現在のインスタンスを参照できません$this
が、 を使用してそれ自体 (現在のクラス) を参照できますself
。
::
オブジェクトを実際にインスタンス化せずに呼び出すことができる静的 (クラス) メソッドを指定します。->
インスタンス化されたオブジェクトを使用できるようにする必要があるインスタンス (オブジェクト) メソッドを指定します。
$m
たとえば、 class のインスタンスである変数がある場合、と言ってmysqli
呼び出すか、 commit と言って静的に呼び出すことができます。commit
$m->commit()
MySQLi::commit()
:: オブジェクトをインスタンス化せずにクラスの関数にアクセスします。
->
演算子は、オブジェクトプロパティ用です。
::
演算子はクラスプロパティ用です。
mysqli->commit では、mysqli は mysqli::commit で MySQLi のインスタンスです。静的メソッドを呼び出します。
mysqli->commit はパブリック関数で、mysqli::commit は静的関数で、この 2 つは mysqli クラスの php オブジェクト表記です。
通常、php.net のドキュメントでは :: は、このクラスにそのメソッドがあることを意味します。実際に使用するには、例に従う必要があるため、-> シンタックスを使用します。