首先是一些背景。我们最近从基于 Zend_Db_Table 的解决方案转换为基于实体的解决方案(Doctrine)。随着我们的应用程序的增长,表类变得越来越难看。一些表使用 ENUM 列来存储基于字符串的键,这些键通过静态方法转换为人类可读的字符串。像这样的东西:
public static function getProductType($productKey)
{
if (!array_key_exists($productKey, self::$productTypes)) {
return null;
}
return self::$productTypes[$productKey];
}
public static function getProductTypes()
{
return self::$productTypes;
}
在转向基于实体的系统时,我尽量避免使用静态方法。我将价值翻译的关键转移到一个视图助手中,并称之为一天。最后,我发现这还不够,因为我们需要以 JSON 对象的形式返回它们,这发生在表示层之外(即不能直接访问视图助手)。
有没有人对这些方法的适当位置有任何理论?我应该创建单独的对象来进行从键到人类可读值的转换,在实体对象上实现静态方法,还是其他什么?