2012-12-16 13 views
5

可能性の重複: What's the difference between :: (double colon) and -> (arrow) in PHP?
Reference - What does this symbol mean in PHP?PHPの::と - の違いは?

私はPHPとはかなりまともな、しかし唯一の手続きです。そこで、私はオブジェクト指向の学習に挑戦することに決めました。私はそれのハングアップを取得し、それを非常によく好きです。

PHP.netでは、オブジェクト指向は常にmysqli::queryになっています。

しかし、私が見たすべての例では、私がいつも使ってきたものだけでなく、mysqli->queryも使用しています。

今日、クラスの例で実際に使用されているのは::です。

私の質問は、::->の間に違いがありますか? "'の違いはありますか?

+2

SymbolHoundを使用してこの情報を見つけることができます。ここにたくさんの答えがありますhttp://symbolhound.com/?q=%3A%3A+-%3E – elclanrs

+0

Aaaand ...気にしないでください。 1時間の検索の後、私は質問を投稿した後に私の答えを見つけました。 XD。 – Oberst

+0

そしてelclanrsに感謝します。私は私の前にあなたがコメントを参照してくださいdidnt。 =) – Oberst

答えて

8

::->は(も適切な名前Paamayim Nekudotayim)インスタンスメソッドのため

+2

これに加えて、静的メソッドでなくても、メソッドはしばしばドキュメントで '::'で参照されます。彼の混乱はどこにあるのだろう。 – Brad

+2

ええ、Javaでは、ポンド記号( '#')を使ってメソッドを呼び出さないのと同じように、なぜこれが行われたのか理解できません。 –

+3

それは私がブラッドに尋ねた理由です。 ありがとうRobin! – Oberst

4

::は「scope resolution operator」であり、静的メソッドを呼び出すためのもので、意味している(静的を行うために使用通常ですオブジェクトではなくクラスそのもののコンテキストでメソッドを呼び出すことになります)。このようオーバーライドされたメソッドから親メソッドを呼び出そうと、このルールにはしかし、例外があります:

parent::foo(); // uses same context as when the method itself was called 

また、あなたがそのような静的プロパティや定数としてクラスの静的プロパティを、参照することができます。

ClassName::FOO; 
ClassName::$property = "bar"; 

- >しかし実際のオブジェクトインスタンスにプロパティまたはメソッドを参照するために使用され、常に($このような)演算子の左側にあるオブジェクト・インスタンスを必要とするであろう。

+0

+1のためにphp.netページにリンクしています。 – Oberst