例:ユーザーエンティティがあるとします。Commandに含まれるデータが操作に必要なデータであることを確認するにはどうすればよいですか?
ユーザーはid
,username
,password
です。 IDはデータベースで自動生成されます。
UpdateUserCommand
には、同じデータを使用する必要があります。
UpdateUserCommandHandler
には、クエリを作成するためのIDが必要ですupdate users set password ... where id = :id
。
しかし、このクエリを作成するために必要なデータがあることを確認するにはどうすればよいですか?なぜif (!somedata) trow new MissingSomeDataException()
がたくさんあるのですか?
例:
if (!isset($data['id'])) {
throw new Exception('ID is missing');
if (!isset($data['username'])) {
throw new Exception('Username is missing');
if (!isset($data['password'])) {
throw new Exception('password is missing');
$id = (int) $data['id'];
if (!isset($data['id'])) {
throw new Exception('ID is invalid');
$query = $this->entityManager->createQuery('update Users u ... where u.id = :id)
$this->entityManager->execute($query, $params);
あなたがオブジェクト指向のソリューションを行うことができます。
旧良い本/著者はPropelのウェブサイト上の例をリストでは、あなたは私が意味するかを理解するのに役立ちます。 たとえば、Yii Frameworkでは、必要なフィールドをすべて記入しなければコマンドは実行されません。自動的に生成されるエラーメッセージ –
はい、最も基本的なバリデータです。選択の枠組みにはもう少し高度なものがあると確信しています。例えば[symfonyでは注釈で行うことができます](http://symfony.com/doc/current/validation.html) –
@AlexBlex私はSymfonyを使用しています。フォームの検証グループは私が必要としているものだと思います。彼らは制約を処理するでしょうからね。だから、フォームが有効になったらフォームからデータを取得するだけで、データがあると確信できます。しかし、CommandHandlerは検証を持っておらず、誰かがそれらを悪用する可能性があります。フォームインスタンスをコマンドハンドラに渡すことはできますか? – JorgeeFG