各コマンドが同様の構造(解析、検証、実行、確認/エラー)を持つコマンドパーサーを持っていますが、それらはすべて異なることをします(開く、閉じる、addnote、changestatus)。
エラー メッセージを変更するように求められ、すべてのコマンドに同じ変更を個別に行う必要がありました。これらのコマンドはすべて異なるパラメーターを持ち、データベース内の異なるテーブルからプルするためです。しかし、それらはすべてほとんど同じです。これを行う簡単な方法はありますか?(switch-case やすべてのコマンドをハードコードするのではなく)
さらに変更が加えられることはわかっており、特にコマンドの数を 2 倍にしたいことがわかっているため、コピー/貼り付けはせず、毎回各コマンドに 2 つの単語を変更したくありません...
validate($commands){
foreach($commands as $command){
switch($command['name']){
case 'close':
validateClose($command);
break;
case 'addnote:
validateAddnote($command);
break;
...
}
}
}
execute($commands){
foreach($commands as $command){
switch($command['name']){
case 'close':
executeClose($command);
break;
case 'addnote:
executeAddnote($command);
break;
...
}
}
}
validateClose($command){
// parse here for parameters, 3
// validate parameters
$command['valid'] = $validated;
if(!$validated)
$message = "Invalid because...";
}
validateAddnote($command){
// parse here for parameters, 1
// validate parameters
$command['valid'] = $validated;
if(!$validated)
$message = "Invalid because...";
}
...
executeClose($command){
$db->status('close', params);
$message = "closed x with {params}";
}
executeAddnote($command){
$db->add('note', param);
$message = "Added {param} as note to x";
}
...