Symfony: neues Objekt mit Klassennamen aus einer Variable


January 13, 2015 at 14:26
Symfony

Ich habe eine Superklasse User, von der sich ein paar Subtypen ableiten:
class Admin extends User { ... }
class Redakteur extends User { ... }
class Noob extends User { ... }
Im Controller beim Anlegen eines neuen Objektes weiß ich anhand der Auswahl schon, welches neue Objekt erstellt werden muss. Ich wollte das ganze aber nicht mit Switch bzw. einer if-Abfrage machen wollte. Meine verschiedenen Usertypen gibt es als Tabelle mit einem Usertyp pro Zeile. Der hat eine ID, einen Namen und, wichtig, eine Spalte "classname". classname
idname
1AdministratorAdmin
2RedakteurRedakteur
3Darf gar nichtsNoob
Und damit ich nun das neue Objekt anhand dieser classnames erstellen kann, benutze ich die ReflectionClass:
        $tmp2 = new \ReflectionClass('Pack\UserBundle\Entity\\'.$group->getClassname());
        $user = $tmp2->newInstance($exists);
Und $user ist damit vom jeweiligen Typ des $group Eintrags.

Tags: reflectionclass variable klassennamen


Hinterlasse einen Kommentar:
Suche