Klasse aufrufen, wenn nur der Name bekannt ist

iAZ

Mitglied
Hallo, ich bins mal wieder.
Ich schreib gerade an meinem CMS rum und hab ein kleines Problem.
Ich versuch möglichst viel OOP zu programmieren und hab im CMS die möglichkeit eingebaut, eigene Module zu benutzen. Die Module liegen als Klassen vor.
Hier eine Beispielklasse:
foo.module.php:
PHP:
class foomodule{
  function make(){
    echo "Hello World";
  }
}
Die make-Funktion ist bei allen modulen dieselbe...
Nun hole ich mir den Modulnamen, also "foo" aus der Datenbank. Die Datei wird per include-befehl eingefügt.
Normalerweise würde jetzt ein:
PHP:
$foomodule=new foomodule();
$foomodule->make();
folgen.
Doch ich kann ja nicht überall für alle Module diesen Code schreiben...
Theoretisch ginge es per:
PHP:
eval("\$".$modulename."=new".$modulename."();"
."\$".$modulename."->make()");
Doch eval werde ich garantiert nicht anwenden!
geht das auch eleganter?
Ich hab den Namen der Klasse in einer Variable stehen und möchte die Klasse aufrufen.

Oder soll ich in den Moduldateien eine Klasse haben und danach den aufruf?
PHP:
$foomodule=new foomodule();
$foomodule->make();

Danke, iAZ
 
Hi

folgender Code funktioniert bei mir:
PHP:
<?php
error_reporting(E_ALL);
class test{
  public function test(){
    return "test";
  }
}
$classname = "test";
$test = new $classname;
echo $test->test();
?>
 
  • Gefällt mir
Reaktionen: iAZ
Zurück