私は構成可能なレポートを持っています。レポートに含めることができる各フィールドには、キー(レポート設定に保存されています)、ラベル、潜在的にアクセスレベル、および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