Achim Schrepfer: dynamische Klassennamen vergeben

Beitrag lesen

Hallo Forum,

ich bastle gerade ein Templatesystem für PHP und möchte eine Möglichkeit schaffen, kleinere Module für diese Templates zu programmieren. Es soll eine grosse Zahl Programmierer die Möglichkeit haben, eigene Module unabhängig voneinander zu entwickeln und nebeneinander zu benutzen. Um Konflikte zwischen den einzelnen Modulen zu vermeiden, wollte ich den Modulcode jeweils in eine Klasse schreiben und dann im Template Objekte daraus erzeugen:

---modul1.php---
<?php
 class modul1 {
  function modul1() {
   ...
  }
 }
?>
---modul2.php---
<?php
 class modul2 {
  function modul2() {
   ...
  }
 }
?>
---template.php---
<?php
 include 'modul1.php';
 include 'modul2.php';
 $obj1 = new modul1();
 $obj2 = new modul2();
?>

Soweit würde es meinen Vorstellungen ja entsprechen. Da aber das Template erst herausfinden muss (anhand einer Datenbank) welche Module "included" werden sollen und dann die Objekte selbst erzeugen muss, suche ich nach einer Möglichkeit die Klassennamen innerhalb der Module dynamisch zu vergeben (z.B. mit einer globalen Zählvariable), um Überschneidungen bei Klassennamen zu vermeiden.

Natürlich könnte man die Konvention einführen, dass der Dateiname und der Klassenname gleich sein müssen und das Template könnte entsprechend agieren, das wäre aber die letzte Möglichkeit, die ich in Betracht ziehen möchte.

Mit eval() würde mein Vorhaben sogar funktionieren, dann müsste ich allerdings die _gesamte_ Klassendefinition in einen eval-Block schreiben, was ich persönlich auch nicht gerade als "guten Stil" empfinde.

Für Ideen und Tipps bin ich jetzt schon dankbar.

Viele Grüsse
Achim Schrepfer