ユーザーをデータベースに保存できるようにしたいと考えてください。追加アクションは次のとおりです。
public function addAction()
{
$form = new UserForm();
$form->get('submit')->setValue('Add');
$request = $this->getRequest();
if ($request->isPost()) {
$userFilter = new UserFilter();
$form->setInputFilter( $userFilter->getInputFilter() );
$form->setData( $request->getPost() );
if ($form->isValid())
$user = new User();
$user->setEmail($form->getInputFilter()->getValue('email') );
$user->setNome( $form->getInputFilter()->getValue('name') );
$em = $this->getServiceLocator()->get('Doctrine\ORM\EntityManager');
$em->persist($user);
$em->flush();
return $this->redirect()->toRoute('user');
}
}
return array('form' => $form);
}
ユーザーをデータベースに保存するのは非常に簡単ですが、複雑なビジネス ロジックを追加する必要がある場合は、電子メールが一意であるかどうかを確認し、Web サービスにアクセスして、人生の究極の問題に対する答えを確認したいと考えています。 、ユニバース、およびすべてが実際には42であり、trueの場合、ユーザーをデータベースに保存したい場合は、ユーザーにメッセージを表示したい.
アクションを追加することはできますが、これはあまり良い習慣ではないと言われているので、このビジネスロジックをエンティティ User 内に配置できますが、これにより zf2 と教義とエンティティとの間の結合が追加され、これも悪いことです。Web でソリューションを検索すると、ビジネス ロジックをサービス レイヤーに配置することが答えのようです。
Service Layer ソリューションに従って、クラス UserBusinessLogic を作成し、すべてが問題なければビジネス ロジックを実行してユーザーを保存するメソッド save を作成します。
これは正しいと思いますか?この件に関するドキュメントはありますか?おそらく、doctrine 2 と zf2 およびサービスを使用してビジネス ロジックを処理する方法を示すコード例です。
結論としては、zf2 と doctrine 2 を使用する場合、ビジネス ロジックを配置するベスト プラクティスは何ですか?
サービスソリューションが最善の方法であると仮定します。エンティティ ユーザー、グループ、およびこれら 2 つの間の関係がある場合、「アクセス」と呼ばれるサービスを作成します。このサービスは、コントローラーからデータを受信してユーザーをグループに保存し、それら 2 つをリンクし、次のような他のタスクを実行するサービスになります。ユーザーパスワードをリセットするためのメールを送信します。これは正しいと思いますか?