Christian Kruse: class FOO extends BAR

Beitrag lesen

Hallo Sven,

du greifst schon richtig mittels "parent" auf die Methode der Basisklasse zu.

Ja? Würde ich genau _nicht_ so sehen.

Falsch ist es nicht, aber in dem Fall unlogisch.

Außerdem ist der statische Aufruf parent::methode() an ganz andere Bedingungen geknüpft.
Statische Aufrufe sind vergleichbar mit dem simplen Aufrufen einer definierten
Funktion - nur dass die Funktion eben in einer Klasse steht. Man hat aber keinerlei
Klassenvariablen zur Verfügung ($this->variable), der Konstruktor wird nicht aufgerufen,
und es gibt eben keine mehreren Instanzen.

Quatsch. Statische Aufrufe sind zwar dementsprechend gekennzeichnet, aber parent::method()
ist kein statischer Aufruf. Nachvollziehbar an einem ganz einfachen Beispiel:

ckruse@srv001:~ $ cat test.php
<?php

class A {
  var $blub = "a";

function x() {
    echo "A: ".$this->blub."\n";
  }
}

class B extends A {
  var $blub = "b";
  function x() {
    parent::x();
    echo "B: ".$this->blub."\n";
  }
}

$x = new B();
$x->x();

?>
ckruse@srv001:~ $ php test.php
A: b
B: b
ckruse@srv001:~ $

Grüße,
 CK

--
Keine Schneeflocke faellt je auf die falsche Stelle.