Symfony: neues Objekt mit Klassennamen aus einer Variable

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

id name
1 Administrator Admin
2 Redakteur Redakteur
3 Darf gar nichts Noob

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.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.