Unterschied -> und ::

Hallo!
Es geht um Klassen, und zwar habe ich och nicht genau verstanden wieso man Methoden in einer Klasse sowohl mit -> als auch mit :: aufrufen kann, wo ist da der Unterschied?
Vielen Dank für die Hilfe!

Der Unterschied ist relativ einfach. Es gibt die Möglichkeit, Klassen mittels Instanziierung oder eben ohne zu nutzen. Bestimmte Klassen-Konstrukte benötigen keine Instanz, um die vorgesehenen Funktionen bzw. Methoden nutzen zu können. Mittels :: greift man auf nicht instanziierte Methoden zu und mit -> auf die Objekte der entsprechend instanziierten Klasse:

<?php class cTest
{ static function fStatic () { echo "Statische Methode"; } function fNonStatic () { echo "Nicht-Statische Methode"; } } // Zugriff auf eine statische Methode ohne Instanz: cTest::fStatic (); // Instanziieren der Klasse und zugreifen auf die entsprechende Methode: $oTest = new cTest (); $oTest-\>fNonStatic (); ?\> Normalerweise muss eine Methode immer mit "static" deklariert werden, damit sie ohne Instanz genutzt werden kann. PHP ist in der Hinsicht aber etwas weniger genau und erlaubt auch den Zugriff auf Methoden ohne "static" in der Deklaration wenn keine Instanz genutzt wird. Wie lange diese Unterstützung noch enthalten ist weiß ich allerdings nicht. Mit PHP 6 könnte dies schon ausgemerzt sein, weshalb es auch zu empfehlen ist, die Methoden trotzdem mit "static" zu deklarieren. MfG Lutz