Was passiert eigentlich wenn man den Stecker des Fernsehers in die Steckdose steckt? Der Fernseher wird mit Strom versorgt, er geht noch nicht gleich an, aber vielleicht in den Standbymodus. Kondensatoren müssen aufgeladen werden und und und.
Also müssen manche Klassen wenn man sie initialisiert (erzeugt), bestimmte Dinge sozusagen als Vorbereitung machen.
$fernseher = new fernseher();
Diese besondere Funktion nennt man Konstruktor (lat. Aufbauer). Sie wird jedesmal ausgeführt, wenn ein Objekt erzeugt wird (und nur dann). Konstruktoren haben immer den Namen der Klasse. Das Gegenteil ist der Destruktor(lat. Abbauer, Zerstörer), er wird aufgerufen, wenn die Variable zerstört wird (nicht in PhP oder Java verfügbar). Ein Destruktor erledigt aufräumarbeiten.
Unser Konstruktor könnte z. B. Zustände Werte zuweisen, also das aktuelle Programm auswählen und den Fernseher ein- oder ausschalten.
class fernseher { var $eingeschaltet; var $aktuellesProgramm; function fernseher() { $this->einschalten(); $this->programmWechseln(0); } //... wie gehabt } $fern = new fernseher();//Einschalten und auf Programm 0 wechseln.
Natürlich können auch Konstruktoren Parameter haben. Wir können unseren Konstruktor so auslegen, dass der Benutzer den Anfangszustand selbst definieren kann.
class fernseher { var $eingeschaltet; var $aktuellesProgramm; function fernseher($ein = "ja",$programm = 0) { if($ein == "ja") $this->einschalten(); else $this->ausschalten(); $this->programmWechseln($programm); } //... wie gehabt } $fern = new fernseher("ja",1);//Einschalten und auf Programm 1 wechseln $fern2 = new fernseher("nein");//Ausschalten und auf Programm 0 wechseln $fern3 = new fernseher(); //Einschalten und auf Programm 0 wechseln //usw.
Ein Parameter mit einem Gleichheitszeichen bedeutet soviel wie: „wenn nicht anders angegeben, nimm diesen Wert an“. Also ein Default-Wert. Default Parameter müssen nicht angegeben werden.