phpbar.de logo

Mailinglisten-Archive

[php] Dynamische Klassennamen

[php] Dynamische Klassennamen

Kraft Bernhard kraftb at mokka.at
Die Mar 8 10:49:14 CET 2005


Sorin Marti wrote:
> Ciao Claudius,
> 
>>> aber keines der beiden Konstrukte hat funktioniert ...
>>>
>>> gehts sowas in PHP4 oder 5 ?
>>>   
>>
>>
>> Nein. Wozu soll das gut sein?
>>  
>>
> Zum Beispiel für einen PersitenceLayer, wo Du für persistente Objekte 
> Zugriffsklassen generiest...

Also ich weiss jetzt nicht ganz was ein Persi(s?)tence Layer sein soll aber ich versuch mal
zu erklären was ich bezwecken will:

Derzeit ist es so das in jedem PHP file genau eine klasse definiert wird. Man kann nun das
System mit Modulen erweitern. Ein Modul soll eine bereits definierte Klasse erweitern können.

Somit mache ich in einer Erweiterungsklasse/file:

class ux_baseclass extends baseclass {
  ...
}

dann gibt es eine funktion makeInstance($classname) die einem eine instanz einer klasse erzeugt.
Beim erzeugen überprüft sie ob eine klasse namens 'ux_'.$classname existiert und wenn ja called
sie makeInstance('ux_'.$classname) ... also rekursiv. Das führt dazu wenn ich eine Erweiterungs
klasse ux_basecalss nocheinmal erweitere:

class ux_ux_basecalss extends ux_baseclass {
	..
}

das bewirkt das die "änderungen" beider erweiterungen in der erzeugten instanz vorhanden sind.

Das Probelm mit dieser Methode ist halt nur dass ich wissen muss ob eine klasse schon einmal erweitert
wurde ... das heisst ich kann die klassen nicht beliebig erweitern sondern der code muss aufeinander
"abgestimmt" sein.

Bei dem ganzen handelt es sich um das XCLASS erweiterungssystem von Typo3 ... und ich suche schon
seit längerem nach einer besseren Methode.

aggregate() hat mir schon mal gefallen nur hat es das problem das es auf instanzen operiert und nicht
auf klassen ....
weiters hat aggreagte das problem wenn ich eine funktion der originalklasse zu "überschreiben" versuche
das das nicht funktioniert ... ich kann nur neue funktionen hinzufügen ...


grüsse,
Bernhard
-- 
Kraft Bernhard
MOKKA Medienagentur <http://www.mokka.at>
T: +43 - 1 - 895 33 33 - 50

php::bar PHP Wiki   -   Listenarchive