Zend framework Zend_验证了避免代码重复的良好策略

Zend framework Zend_验证了避免代码重复的良好策略,zend-framework,dry,zend-validate,yagni,Zend Framework,Dry,Zend Validate,Yagni,我目前正在构建两个自定义验证器,它们扩展了Zend\u Validate\u Abstract,分别命名为Lib\u Validate\u TimeAfter和Lib\u Validate\u TimeBetween。名称非常简单,第一个用于测试日期/日期时间/时间是否在另一个之后,第二个用于测试日期/日期时间/时间是否在另外两个日期/日期时间/时间之间 这两个验证器都将依赖名为\u buildDate($value)的相同方法,该方法采用日期戳、时间戳(或者hh:mm或者hh:mm:ss)、时

我目前正在构建两个自定义验证器,它们扩展了
Zend\u Validate\u Abstract
,分别命名为
Lib\u Validate\u TimeAfter
Lib\u Validate\u TimeBetween
。名称非常简单,第一个用于测试日期/日期时间/时间是否在另一个之后,第二个用于测试日期/日期时间/时间是否在另外两个日期/日期时间/时间之间

这两个验证器都将依赖名为
\u buildDate($value)
的相同方法,该方法采用
日期戳
、时间戳(或者
hh:mm
或者
hh:mm:ss
)、
时间戳
或者
ISO\u 8601时间戳
的形式的值,并将其转换为可用的日期格式

因为我不想重复我自己,也不想在我的两个验证器中复制/粘贴该方法,所以我一直在寻找最好的方法

我现在正在寻找的途径是开发我的验证器能够使用的类助手(因为它添加了不必要的依赖项,所以这是一种混乱的处理方式)或者我可以通过构建另一个验证日期/日期时间/时间的验证器来添加另一个抽象层,然后在此基础上扩展我的两个验证器,因为我可以共享方法
\u buildDate($value)
,但是我认为我真的不需要验证器


那么,有什么好的方法(我不是真的在寻找“神的方式”来做事情)来构造这种代码以避免重复(枯燥)?

您可能希望构建一个而不是两个验证器,您可以在其中传递dateBefore和dateAfter,这两个都是可选的。如果仅传递dateBefore,则$value在该日期之后有效;如果同时传递这两个日期,则$value必须介于两者之间;如果仅传递dateBefore,则$value必须在该日期之前有效


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

一个类
Lib\u Validate\u Common
如何扩展具有您的通用方法的
Zend\u Validate\u Abstract
。和
Lib\u Validate\u TimeAfter
Lib\u Validate\u TimeBetween
extensed
Lib\u Validate\u Common

哇,我怎么没想到呢:p.谢谢,这是正确的方法。