2016-04-26 11 views
1

Ich bin neu in Symfony, ich habe eine Frage über den besten Weg, eine Eigenschaft in einer Entität zu initiieren.Symfony | Der beste Weg zum Initiieren von Eigenschaften in Entity

Zum Beispiel habe ich eine Entity „Frage“, die eine Eigenschaft „user“ hat, wie ich dies tun:

$question = new Question(); 
$question->setUser($this->getUser()); 
$form = $this->createForm(QuestionType::class, $question); 

Es funktioniert, ich auch mit dem Konstruktor tun können:

$question = new Question($this->getUser()); 
$form = $this->createForm(QuestionType::class, $question); 

Es funktioniert auch, aber ich weiß nicht, welcher der beste ist. Oder vielleicht gibt es eine andere bessere Lösung? Ich meine, ich werde diese Entität oft init und vielleicht gibt es eine Möglichkeit, zu tun:

$question = new Question(); 
$form = $this->createForm(QuestionType::class, $question); 

So habe ich nicht über „user“ in meinem Controller zu kümmern?

Wie auch immer, was ist die beste Lösung, dies zu tun?

Danke.

Antwort

2

Es hängt davon ab, ob eine Frage in Ihrem Kontext einen Benutzer haben muss oder nicht. Wenn es optional ist, ist der Setter in Ordnung - Sie können eine Frage auch ohne Benutzer erstellen. Wenn es notwendig ist, sollten Sie es im Konstruktor einfügen - das hilft auch anderen Entwicklern und Ihrem zukünftigen Selbst zu verstehen, dass Sie keine Frage ohne einen Benutzer erstellen können.

Die dritte Option würde bedeuten, dass Sie den Benutzer irgendwie aus der Frage holen müssen, die es mit dem Mechanismus verbindet, der dafür verantwortlich ist (zum Beispiel die Sicherheitskomponente). Dies ist im Allgemeinen eine schlechte Idee, da es die Verwendung einschränkt und Tests schwieriger macht.

Ein weiterer Hinweis: vielleicht ist setUser() keine gute Namenswahl für eine Question-Klasse, denn es fehlt der Ausdruck dessen, was es wirklich ist. Ist es der Autor der Frage? Dann könnte setAuthor() eine bessere Wahl sein.

+0

Klare Antwort und danke für den Hinweis Daniel, ich werde den Namen der Immobilie ändern. – Aximem

Verwandte Themen