Tach!
Beim Model wird anders verfahren. Hier und nur hier gibt es die Notation :: und in der Klasse wird gibt es sowohl folgende Notation this->Eigenschaft aber auch self::$Eigenschaft
Warum sieser Unterschied?
Was syntaktisch dahintersteckt hat Bobby ja schon gesagt. Warum man das an der Stelle so verwendet, kann man nicht erklären, ohne den konkreten Code gesehen zu haben. Man kann höchstens versuchen, allgemein zu erklären, warum man mal statisch und warum man mal über Instanzen an die Lösung der Aufgabenstellung geht.
Bei einer Klasse, die mathematische Funktionen bündelt, braucht man im Normalfall keine Instanz. Die Methoden werden mit Parametern aufgerufen, berechnen daraus ein Ergebnis und das wars. math::sin(x) reicht als Aufruf. Berechnet, Ergebnis genommen, erledigt der Fall, eine Instanz ist überflüssig.
class math {
function sin(x) {
return ergebnis_irgendwie_ermittelt;
}
function cos(x) {
return ergebnis_irgendwie_ermittelt;
}
function tan(x) {
return self::sin(x) / self::cos(x);
}
}
Beim Berechnen des Tangens kann man die Funktionen für Sinus und Cosinus verwenden. Da aber keine Instanz existiert und auch nicht innerhalb der Tangens-Methode eine erzeugt werden muss, ruft man die beiden anderen Methoden statisch auf. Das self verweist dabei auf den Klassennamen. Stattdessen könnte man auch math::sin() und math::cos() innerhalb der tan()-Methode aufrufen. Man nimmt aber lieber den generischen Namen self, damit bei einem eventuellen Umbenennen der Klasse nur die eine Stelle anfassen muss und nicht noch viele andere geändert werden müssen (jedenfalls innerhalb des eigenen Codes der Klasse).
dedlfix.