2012-12-16 12 views
5

Powiel możliwe: What's the difference between :: (double colon) and -> (arrow) in PHP?
Reference - What does this symbol mean in PHP?Różnica między :: i -> w PHP?

Jestem całkiem przyzwoite z PHP, ale tylko proceduralny. Postanowiłem więc przejść do przedmiotu zorientowanego na uczenie się. Rozumiem to i bardzo lubię to.

Na PHP.net zawsze widziałem obiekt zorientowany jako mysqli::query.

Jednak każdy przykład, który widziałem, używa mysqli->query oraz tego, z czego zawsze korzystałem.

Dziś przebiegłem widząc :: używany w przykładzie klasy.

Moje pytanie brzmi, czy istnieje różnica między :: a ->? Czy to jest jak różnica między " a '?

+2

Możesz użyć SymbolHound, aby znaleźć te rzeczy. Wiele odpowiedzi tutaj http://symbolhound.com/?q=%3A%3A+-%3E – elclanrs

+0

Aaaand ... Nieważne. Po godzinie poszukiwań znalazłem odpowiedź po napisaniu mojego pytania. XD. – Oberst

+0

I dziękuję elklanom. Nie widziałem twojego komentarza, zanim zrobiłem moje. =) – Oberst

Odpowiedz

8

:: jest wywołanie metody statyczne, -> jest dla metody instancji

+2

Oprócz tego metody często są przywoływane w dokumentacji z '::', nawet jeśli nie są to metody statyczne. Myślę, że to jest jego zamieszanie. – Brad

+2

Tak, tak jak w Javie, nie nazywasz metod za pomocą znaku funta ('#'), nigdy nie rozumiesz, dlaczego tak się dzieje. –

+3

To było DOKŁADNIE, dlaczego poprosiłem Brada. Dzięki Robin! – Oberst

4

:: jest „scope resolution operator” (również trafnie nazwany Paamayim Nekudotayim) i jest zwykle czynili statycznej (co oznacza że wywołasz metodę w kontekście samej klasy, a nie obiektu) wywołanie metody. Istnieją jednak wyjątki od tej reguły, takie jak próby wywołania metody nadrzędnej z metody nadpisane:

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

Będzie również pozwalają odwołać właściwości statycznych klasy, takie jak właściwości statycznych i stałych.

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

-> jest jednak użyta w odniesieniu do właściwości lub metody w konkretnym przypadku obiektu i zawsze wymaga wystąpienia obiektu do lewej strony (takiej jak $ tego).

+0

+1 za link do strony php.net. – Oberst

Powiązane problemy