1

我目前正在构建两个扩展的自定义验证器,Zend_Validate_Abstract它们分别命名Lib_Validate_TimeAfterLib_Validate_TimeBetween. 名称非常简单,第一个用于测试日期/日期时间/时间是否在另一个之后,第二个用于测试日期/日期时间/时间是否位于其他两个日期/日期时间/时间之间。

这两个验证器都将依赖于名为的相同方法,该方法_buildDate($value)采用 a datestamp、 a hourstamphh:mmhh:mm:ss)、 atimestamp或 an形式的值ISO_8601 timestamp并将其转换为可用的日期格式。

由于我不想重复自己并在我的两个验证器中复制/粘贴该方法,我一直在寻找最好的方法来做到这一点。

我现在正在研究的途径是开发某种我的验证器可以使用的类助手(一种混乱的做事方式,因为它添加了不必要的依赖项),或者我可以通过构建一个添加另一个抽象层验证日期/日期时间/时间的其他验证器,然后扩展我的两个验证器,因为我可以共享该方法_buildDate($value),但是我认为我真的不需要验证器。

那么,什么是构建这种代码以避免重复(DRY)的好方法(我并不是真的在寻找“众神之道”做事)?

4

2 回答 2

3

您可能想要构建一个验证器而不是两个,您可以在其中传入一个 dateBefore 和 dateAfter ,它们都是可选的。如果您只传递 dateBefore,则您的 $value 如果在该日期之后将有效,如果您同时传递两者,则它必须在它们之间,如果您仅传递 dateAfter,则该值必须在该日期之前。

这将是灵活的、清晰的、通用的、更少的代码,甚至涵盖更多的案例。

于 2011-08-18T12:56:54.557 回答
0

Lib_Validate_Common扩展的类Zend_Validate_Abstract具有您的通用方法呢?并且延伸。Lib_Validate_TimeAfter_Lib_Validate_TimeBetweenLib_Validate_Common

于 2011-08-18T12:59:43.790 回答