1

私は現在、拡張する 2 つのカスタム バリデーターをZend_Validate_AbstractそれぞれLib_Validate_TimeAfterとという名前で構築していLib_Validate_TimeBetweenます。名前は非常に単純です。最初の名前は、日付/日時/時刻が他の日付/日時/時刻の後にくるかどうかをテストするために使用され、2 番目は、日付/日時/時刻が他の 2 つの日付/日時/時刻の間に来るかどうかをテストするために使用されます。

これらのバリデーターはどちらも、 a 、 a (または )、 aまたは an_buildDate($value)の形式の値を取り、それを使用可能な日付形式に変換するという名前の同じメソッドに依存します。datestamphourstamphh:mmhh:mm:sstimestampISO_8601 timestamp

私は自分自身を繰り返して、両方のバリデーターでメソッドをコピーして貼り付けたくないので、それを行うための最良の方法を探していました。

私が現在検討している方法は、バリデーターが使用できるある種のクラスヘルパーを開発することです (不要な依存関係を追加するため、面倒な方法です)。日付/日時/時刻を検証し、メソッドを共有できるため、2つのバリデーターを拡張する他のバリデーターです_buildDate($value)が、バリデーターが本当に必要になるとは思いません。

それで、繰り返し(DRY)を避けるためにそのようなコードを構造化するための良い方法は何ですか(私は物事を行うための「神の方法」を実際に探しているわけではありません)。

4

2 に答える 2

3

2 つではなく 1 つのバリデーターを構築することをお勧めします。どちらもオプションの dateBefore と dateAfter を渡すことができます。dateBefore のみを渡す場合、$value はその日付以降であれば有効です。両方を渡す場合は、その間にある必要があり、dateAfter のみを渡す場合は、値がその日付より前である必要があります。

これは、柔軟で、明確で、汎用的で、コードが少なく、さらに 1 つのケースをカバーします。

于 2011-08-18T12:56:54.557 に答える
0

共通のメソッドを持つLib_Validate_Common拡張クラスはどうですか。Zend_Validate_AbstractそしてLib_Validate_TimeAfterLib_Validate_TimeBetween拡張しLib_Validate_Commonます。

于 2011-08-18T12:59:43.790 に答える