studyklar
IProg · Klausur 2 · Aufgabe 5

PHP-Ausgaben: variable Variablen, Konstruktor und Destruktor

Zwei kurze PHP-Stücke, und die Frage: Was steht danach auf dem Bildschirm? Teil (a) zeigt eine Variable, deren Name erst beim Ausführen feststeht. Teil (b) zeigt, wann PHP Konstruktor und Destruktor eines Objekts aufruft. Rechts wachsen Variablen und Ausgabe Zeile für Zeile. Mit Weiter geht es voran.

Die Aufgabe

5) PHP (8 Punkte)

a) Geben Sie die Ausgaben des folgenden Programmausschnittes an.

$a  = "z";$$a = "y";echo "=> $z $a ";

b) Gegeben sei eine kleine PHP-Klasse und eine zugegebenermaßen wenig sinnvolle Anwendung. Was wird ausgegeben?

class Test {  private $v = 1;   public function __construct($x = 8) {    $this->v = $x;    echo "KKK $this \n";  }  public function __destruct() {    echo "DDD $this \n";  }  public function __toString() {    return "- $this->v";  }} $my_test = new Test();for ($i = 3; $i > 1; $i--)  $my_test = new Test($i);

Gesucht ist in beiden Teilen nur die Ausgabe, so wie sie das Programm schreibt. Man spielt das Programm im Kopf Zeile für Zeile durch und notiert jede Ausgabe. Für (a) gibt es 2 Punkte, für (b) 6.

echo schreibt einen Text in die Ausgabe. \n in einem Text ist ein Zeilenumbruch.

Merke: In doppelten Anführungszeichen setzt PHP den Wert jeder Variablen ein. Ein Objekt wird dabei zu dem Text, den seine Methode __toString zurückgibt.
  1. (a) Zeile für Zeile: welche Variable bekommt welchen Wert.
  2. (a) Die Ausgabe von echo.
  3. (b) Was die Klasse Test tut.
  4. (b) Das Programm durchspielen: jedes new, jede Zuweisung, das Ende des Skripts.

$a bekommt den Text z

$a  = "z";

Zeile 1 ist eine gewöhnliche Zuweisung: Die Variable $a enthält danach den Text "z". Die zwei Leerzeichen vor dem = ändern nichts.

$$a ist die Variable $z

$$a = "y";   // wirkt wie: $z = "y";

$$a ist eine variable Variable: eine Variable, deren Name erst beim Ausführen aus einer anderen Variablen kommt. PHP liest es von innen nach außen. Zuerst wird $a ausgewertet, das ergibt z. Das äußere $ macht daraus den Variablennamen $z.

Zeile 2 heißt also $z = "y";. Es entsteht eine neue Variable $z mit dem Text "y"; $a bleibt "z".

Aus Skript 05, Folie 16: Bei $a = "hello"; $$a = "world"; entsteht die Variable $hello mit dem Wert "world".
Noch 8 Schritte bis zum Ergebnis
Den ganzen Lösungsweg sehen Studierende und Lehrende der HS KL. Registriere dich mit deiner Adresse @stud.hs-kl.de oder @hs-kl.de, dann geht es hier direkt weiter.

Abbildung 1(a) Variable Variablen

$$a und echo

$a  = "z";$$a = "y";echo "=> $z $a ";

Noch keine Variable belegt.

 
LegendeZeilen des SchrittsDie beiden Programmstücke. Variablen und Ausgabe füllen sich Schritt für Schritt.