私はStrategyパターンを使用しています。これは、インターフェイスといくつかのクラスを使用して、それを実現することを意味しています。 Factoryパターンを使用すると、インターフェイスタイプのインスタンスが作成されます。OOPを使用して一般的な検証を実装する方法は?
各クラスにはメソッドvalidate()
があります。
public function validate($file)
{
$allowedFileTypes = config('app.allowedFileTypes');
$maxFileSize = config('app.maxFileSize');
$validator = Validator::make(
array('file' => $file),
array('file' => array(
'required',
'mimes:' . $allowedFileTypes . '|max:' . $maxFileSize)));
if ($validator->fails()) {
//
}
}
}
これはインターフェイスで記述されたメソッドで、このメソッドはマイナーチェンジで各クラスに配置されています。だから私はDRY principle
を使用し、クラスの検証コードを離そうとします。しかし、私はそれをどのような形で行うべきかわかりません:
- 抽象検証クラスとして?
[This](https://github.com/Respect/Validation)は、チェックアウトする価値のあるプロジェクトです。 – Marty
問題はバリデーションを書く方法ではなく、問題はOOPとSOLIDアーキテクチャにあります – OPV
私は認識しているので、それは「関連性がある」だけです。おそらく、プロジェクトの背後にあるものに特有の豊富な知識があります。 – Marty