配列内のすべてのサブスクリプションに電子メールを送信するループが与えられた場合
foreach($subscriptions as $s){
if(!$s->send_email()){
}
}
すべてのモデルが正常にメール送信された場合にコールバックをトリガーする、またはモデルの 1 つがメール送信に失敗した場合にエラーを表示する最もクリーンな方法は何でしょうか。ループの最後まですべてのエラー メッセージを保存して全体として出力するか、エラーでループを中断するのが一般的ですか。
これをプロジェクト (/projects/1) を保存する JSON REST API と組み合わせて使用し、すべてのユーザーにメールを送信します。
私が現在使用している方法は、ネストされた多数の if else で汚れているように感じ、異なる場所で 3 つの異なる応答を送信します。
if($project->save()){
$subscriptions = Subscription::model()->findAllByAttributes(array('planning_id' => $planning->id));
foreach($subscriptions as $s){
if(!$s->send_email()){
$errors[] = "failed to send email. Subscription ". $s->id;
}
}
if(count($errors) > 0){
//send json api response with error response
} else {
//send json api success response
}
} else {
//send json api response with project error response
}
これに関してどんな慣習があるのだろうと思っていました