2016-04-26 7 views
1

私はSymfonyの新機能です。エンティティのプロパティを初期化する最良の方法について質問があります。Symfony |エンティティのinitプロパティへの最良の方法

例えば、私は、プロパティ「ユーザー」を持っているエンティティの「質問」を持って、私はこれを行う:

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

それは私もコンストラクタでそれを行うことができ、動作します。

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

それも動作しますが、どちらが最善であるか分かりません。それとももっと良い解決法がありますか?私は、私はこのエンティティを何度もinitにする必要がありますし、多分行う方法がある意味:

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

だから私は私のコントローラで「ユーザー」を気にする必要はありませんか?

とにかく、これを行うにはどうすればよいソリューションですか?

ありがとうございました。

答えて

2

あなたの文脈で質問がであるかどうかによって異なります。にユーザがいなければなりません。オプションの場合は、設定者は問題ありません。ユーザーがいなくても質問を作成できます。必要な場合は、コンストラクタに挿入する必要があります。これは、他の開発者や将来の自己がユーザーなしで質問を作成できないことを理解するのにも役立ちます。

3番目のオプションは、質問の中から何らかの形でユーザーを取得しなければならないことを意味します。これは、それを担当するメカニズム(たとえばセキュリティコンポーネント)に結合します。これは、一般的には使い方が限定され、テストをもっと難しくするので、悪い考えです。

別のヒント:おそらくsetUser()は、実際に何が表現されていないかのように、Questionクラスの適切な名前の選択肢ではありません。それは質問の著者ですか?その後、setAuthor()が良い選択かもしれません。

+0

明確な答えとヒントダニエルのおかげで、私はプロパティの名前を変更します。 – Aximem

関連する問題