我目前正在构建两个扩展Zend_Validate_Abstract
的自定义验证器,分别命名为Lib_Validate_TimeAfter
和Lib_Validate_TimeBetween
。名称非常简单,第一个用于测试日期/日期时间/时间是否在另一个之后,第二个用于测试日期/日期时间/时间是否在另外两个日期/日期时间之间。
这两个验证器都依赖于名为_buildDate($value)
的相同方法,该方法采用datestamp
,hourstamp
(hh:mm
或{{}形式的值1}}),hh:mm:ss
或timestamp
并将其转换为可用的日期格式。
由于我不想重复自己并在我的两个验证器中复制/粘贴方法,我一直在寻找最好的方法。
我现在正在研究的途径是开发一些我的验证器可以使用的类帮助程序(由于它添加了unessesary依赖项,这种处理方式很乱)或者我可以添加另一层抽象通过构建另一个验证日期/日期时间/时间的验证器然后扩展我的两个验证器,因为我可以共享方法ISO_8601 timestamp
,但我认为我不会真的需要验证器。
那么,什么是一个好方法(我不是真的在寻找“做神的方式”)来构造那种代码以避免重复(DRY)?
答案 0 :(得分:3)
您可能希望构建一个验证器而不是两个验证器,您可以在其中传入dateBefore,dateAfter,它们都是可选的。如果你只传递dateBefore,你的$值将在该日期之后有效,如果你传入两者,它必须在它们之间,如果你只传入dateAfter,那么该值必须在该日期之前。
这将是灵活,清晰,通用,更少的代码甚至涵盖一个案例。
答案 1 :(得分:0)
如果Lib_Validate_Common
扩展Zend_Validate_Abstract
哪个类具有您的常用方法呢? Lib_Validate_TimeAfter
和Lib_Validate_TimeBetween
延伸Lib_Validate_Common
。