T-Rex: Klassen constante vom Kind benutzen um eigene Constante zu definieren

Beitrag lesen

Moin,

ich möchte, dass folgendes oder ein ähnliches Konstrukt funktioniert:

class cTestParent
{
	const ID = self::TABLENAME."_ID";
}

class cTestChild extends cTestParent
{
	const TABLENAME = "test";
}

$objChild = new cTestChild();
echo $objChild::ID;

Im Parent werden Datenbankfelder definiert, die für mehrere erbende Klassen gleich sind und sich nur im Tabellennamen ändern. Der Tabellenname soll nur in den Childs definiert werden. Am Ende möchte ich mit $objChild::ID auf die Tabellenfelder zugreifen. Und NUR SO. Ein $objChild->ID oder ein $objChild::$ID ist nicht möglich (um große Erklärungen zu ersparen, dass ist einfach so).

Obiges Beispiel bringt den Fehler "Exception: Undefined class constant 'self::TABLENAME'". Mache ich ein sonst TABLENAME = self::TABLENAME; dazu, dann bekomme ich den Fehler: "Exception: Cannot declare self-referencing constant 'self::TABLENAME'".

Natürlich kann ich jedes neue Feld in alle ableitende Klassen reinpacken. Im Moment sin das schon 4 - ergo muss ich 4 Dateien aufmachen und die neuen Felder da reinpacken. Es können aber locker noch an die 20 oder sogar noch mehr werden. Ergo suche ich eine elegante Lösung die Felder nur einmal definieren zu müssen.

Gruß fauler x