我有一个可配置的报告。对于报告中可以包含的每个字段,都有一个键(存储在报告首选项中),标签,潜在的访问级别和SQL描述符 - 类似foo as my_foo
。用于创建静态值对象列表的PHP解决方案
在Java应用程序中,我将创建一个名为ReportField的类,其中包含上面列出的每个属性。我会使用一个私有的构造,并列出每个字段的类中的是这样的:
public final static ReportField FOO = new ReportField('foo', 'Foo', 1, 'foo as my_foo');
我可能会创建的所有字段的静态数组,添加一个静态方法,它允许一个场被钥匙抬起,等等。然后在其他地方,我可以写如下代码:
List<String> selectFields = new ArrayList<String>();
for (ReportPref pref : reportPrefs) {
selectFields.add(ReportField.getByKey(pref.getField()).getFieldSql());
}
道歉的Java代码,但希望你明白我的观点。
是否有一种习惯用法解决PHP中的相同问题?我可以想到一些解决方案 - 嵌套关联数组可以做到这一点 - 但我想避免一个骇人听闻的解决方案。
阅读前面的答案后,这是一个似乎合乎逻辑,以我的方式。懒惰地初始化集合的静态访问方法似乎是最合乎逻辑的方法。 至于为什么我会采取这种方法,这是一个很好的方式来创建一个选项集的多个属性,除了程序员是不可改变的。通常你只需要使用一个数据库表来处理这种事情,但由于它与应用程序绑定的方式,将它作为代码的一部分而不是数据的一部分会更有意义。 (即使它是数据。) – Rafe 2009-07-13 15:24:03