Klasse: Transporter + Schlüsselwort: „self“

Als nächstes brauchen wir Transporter um den Handel zwischen den Planeten in Schwung zu bringen. Transporter haben keine Waffen („laser“), aber dafür einen Frachtraum. Transporter können be- und entladen werden und können ihre maximale Frachtkapazität nicht übersteigen. Lege eine Datei Transporter.php an (im gleichen Verzeichnis wie die anderen Klassen) und füge den folgenden Quellcode ein:

<?php
	require_once('Raumschiff_fabrik.php');

	class Transporter extends Raumschiff_fabrik
	{
		protected $geschwindigkeit = 10;
		protected $schild = 3;
		protected $leben = 12;
		
		protected $frachtraum = 0;
		const FRACHTRAUM_MAX = 20;
		
		public function __construct() 
		{
			parent::__construct();   
			$this->typ = __Class__;
		}
		
		public function beladen($last) 
		{
			if(($this->frachtraum + $last) > self::FRACHTRAUM_MAX)
			{
				echo 'Soviel Last kann der Frachtraum nicht laden, bitte reduzieren Sie die Last um '.(($this->frachtraum + $last) - self::FRACHTRAUM_MAX).' Einheiten';
			} else {
				$this->frachtraum += $last;
				echo 'Frachtraum beladen. Noch '.(self::FRACHTRAUM_MAX - $this->frachtraum).' Einheiten Last moeglich';
			}
		}
		
		public function entladen() 
		{
			$this->frachtraum = 0;
			echo 'Transporter: '.$this->name.' wurde entladen';
		}  
	}

//der folgende Teil ist nur zum testen und soll nicht mit in der Datei Transporter.php stehen.

	$transporter1 = new Transporter;
	print_r($transporter1);

	echo '<br /><br />'; 
	
	$transporter1->beladen(10);
	echo '<br />';
	$transporter1->beladen(12);
	echo '<br />';
	$transporter1->entladen();
?>

Diese Klasse hat zwei neue Dinge:
1. const FRACHTRAUM_MAX = 20; – hierbei handelt es sich um eine Konstante. Jeder Transporter hat einen Frachtraum, der in diesem Fall die Größe 20 hat.

2. Um innerhalb einer Klasse eine Konstante zu verwenden, benötigt man das Schlüsselwort self. „Self“ bezieht sich dabei auf die gerade aktive Klasse. Alternativ könnte man auch einfach den Namen der Klasse verwenden, beides ist demnach möglich um innerhalb der Klasse „Transporter“ auf den Wert der Konstante zuzugreifen:

echo self::FRACHTRAUM_MAX;

echo Transporter::FRACHTRAUM_MAX;

Jetzt fehlt nur noch ein Raumschiff Typ: der Zerstörer. Der Fighter ist ein kleines, wendiges Raumschiff mit einer relativ schwachen Bewaffnung. Damit feindliche Aliens garnicht erst auf die Idee kommen unsere Heimatwelt anzugreifen, brauchen wir eine Abschreckungsflotte. Eine Flotte, bis an die Zähne bewaffneter, Zerstörer.

hier geht's weiter...



Feedback Formular