Konstruktor Frage

05/13/2015 00:28 #AnymRolex*#1
Hallo,

Ich habe hier ein folgendes Programm (OOP) indem ein Konstruktor ist , nun ist meine Frage:

Ich versteh nicht wie es den Namen des Fahrzeugs anzeigt(Ausgabe auf dem Bildschirm). Es wird durch den Code $this->bezeichnung angezeigt aber ich habe dieses neue Fahrzeug ja nicht als bezeichnung "makiert/angegeben" ich meine es so z.B

$vespa = bezeichnung (z.B)

Hier der Code:

05/13/2015 00:55 Devsome#2
Ich weiß nicht ob ich deine Frage richtig verstanden habe.
Ein __construct wird immer aufgerufen wenn die classe aufgerufen wird, in diesem Fall "Fahrzeug"

Du rufst 2x am Anfang die class mit
Code:
$vespa = new Fahrzeug("Auto A", 25);
&
Code:
$scania = new Fahrzeug("Auto B",35);
auf.
Also wird in $this->bezeichnung = $bez , in diesem Fall erst Auto A dann Auto B geschrieben.
Bei der ausgabe(); Funktion gibst du ja mit echo die $this->bezeichnung aus, daher wird der Name angezeigt.

Mit der Funktion beschleunigen(); änderst du den Wert von der Variable $vespa und gibst es danach wie o.g wieder aus :3

//Update:
Wenn du in der Funktion ausgabe(); die beiden echos mal auskommentierst und ein
Code:
var_dump($this);
schreibst, siehst du in welchem Object was wie geschrieben ist.
05/13/2015 00:55 xEncounter#3
Wenn ich nich falsch liege brauchst du für deine Attribute "getter", um sie dir von deinen Objekten zu holen.

Da die Attribute auf private gesetzt sind, kommtst du außerhalb der class Fahrzeug nicht dran.

Du musst für dein Attribut immer ein Getter und eventuell Setter Methode schreiben, wenn du die Attribute abrufen oder verändern willst.

Erweitere deine Klasse um diese Methode
Code:
  public function getBezeichnung() {
        return $this->bezeichnung;
    }
Danach kannst du die Bezeichnung abrufen mit der Methode
Code:
echo $vespa->getBezeichnung();
Oder du setzt beide Attribute auf public und rufst die so auf
Code:
echo $vespa->bezeichnung;
05/13/2015 01:02 Devsome#4
Quote:
Originally Posted by xEncounter View Post
Wenn ich nich falsch liege brauchst du für deine Attribute "getter", um sie dir von deinen Objekten zu holen.

Da die Attribute auf private gesetzt sind, kommtst du außerhalb der class Fahrzeug nicht dran.

Du musst für dein Attribut immer ein Getter und eventuell Setter Methode schreiben, wenn du die Attribute abrufen oder verändern willst.

Erweitere deine Klasse um diese Methode
Code:
  public function getBezeichnung() {
        return $this->bezeichnung;
    }
Danach kannst du die Bezeichnung abrufen mit der Methode
Code:
echo $vespa->getBezeichnung();
Oder du setzt beide Attribute auf public und rufst die so auf
Code:
echo $vespa->bezeichnung;
Eigentlich hat er "fast" eine getter Funktion ;o
Funktion ausgabe(); ändern anstatt echo ein return mit $this->bezeichnung
05/14/2015 23:23 Warnuk3r#5
Code:
$vespa = new Fahrzeug("Vespa Piaggio", 25); 
$scania = new Fahrzeug("Scania TS 360", 62);
Hier hast du doch die Bezeichnung angegeben.

Fahrzeug(Bezeichnung, Geschwindigkeit) // __construct($bez, $ge).