Mailinglisten-Archive |
Kraft Bernhard wrote: > 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. Sollte sich die Erweiterung nicht selber um die 'Instanzierung' seiner Klassen kümmern? Eine Erweiterung sollte doch in Form einer Datei oder eines Verzeichnis vorliegen, welches von der Anwendung eingebunden wird - der Code in der Datei sorgt doch dann für die komplette Anbindung, also auch 'Instanzierung' benötigter Objekte, und nicht die Anwendung. Die Wikipedia-Software macht das z. B. so. Eventuell könnte man bei der Registrierung der Erweiterung an der Anwendung noch eine Init-Funktion mitgeben. -- Sebastian Mendel www.sebastianmendel.de www.sf.net/projects/phpdatetime | www.sf.net/projects/phptimesheet
php::bar PHP Wiki - Listenarchive