2011-05-23 18 views
2

私はリファクタリングしているより大きな柔軟性を持つ大きなクラスを持っています。クラス、実装の提案のための大規模構成

INIファイル内の設定可能なプロパティ(変数)は100を超えています。いくつかは開発者の設定で、その他はプロダクション設定です。

現在、環境フラグを使用して、必要なINI設定(devまたはprod)を取得します。

すべてのINIフィールドは必須であり、設定する必要があります。 (現在、このためにsetterを使用しています)。

だから何が意味がありますか?

  • A:
  • B現在の設定を維持する(XMLまたは何かのように)構成設定の別の種類に移動
  • C:スクリプト自体にすべての設定を移動し、INIの解析と検証を除去コード(セッター)
  • D:提案はありますか?

ボーナス質問:

私は週末にこれを読んでいた:http://berryllium.nl/2011/02/getters-and-setters-evil-or-necessary-evil/と設定でゲッター/セッターの機能を使用しないようにどのように私はとして開発スタイルのこのタイプの多くのが、混乱して従うことができる方法を知りたいと思いました必須フィールド?私はgetters/setterの必要性を理解しており、それらを正しく実装しているかどうかを知りたがっていますか?

私は大きな配列(50アメリカの州のような静的な値が、同様に米国の領土を追加する機能を持つ)、DBの設定、検証の制限($ 100の支出限度を考えるが、変更することができます)のようなもののためINIを使用

+0

なぜ、単純なPHP設定ファイル – Robus

+0

@ Roobusになる可能性のある何かに時間と労力を費やすので、INIファイルを捨ててクラス内のすべての設定を移動すると言っているのですから? –

答えて

2
  • あなたが読めるの設定 を維持したい場合は、PHPスクリプトに現在のセットアップや 移動設定を維持(ただし、クラスにそれらをハード ません)。 使用JSON形式またはPHPスクリプト - -
  • あなたはパフォーマンスを向上したい 場合
  • json_decodeは、より速くより速く動作し、簡単にAPCによって をキャッシュすることができ PHPスクリプトを動作します。
  • バリアントとして、 設定ファイルを一度解析し、すべて の設定をキャッシュ(APCまたはmemcache)に入れることができます。

また、私は誰も気にしないと思うが、私はゲッターとセッターに関する私の意見を持っています:)
ゲッターとセッターは悪ではありません。カプセル化のアイデアはフィールドを隠すだけでなく、クラスの仕組みを隠すことです。ゲッターとセッターはインターフェースで宣言することができるので、あるオブジェクトを別のオブジェクトに置き換えることができます。それはカプセル化のためのものです。

ベリーランゲルクの記事 - withdrawdepositの例を見てみましょう。このコードはすべてsetBalanceメソッドで正常に実行できますが、ほとんど何も変更されません。すべてのこれらのチェック、比較 - それはセッターの通常の仕事です。

なぜパブリックフィールドが悪いのですか?オブジェクトは変更を制御することができず、インタフェースで宣言できないためです。ゲッターとセッターはそれを行うことができるので、OOPの完璧なツールです。

アクセサリーは勿論、馬鹿に書くこともできますが、悪意を持っているわけではありません。クラス内のどのメソッドも、愚かに書くことができます。

1

興味深い質問です。

私はこれらの変数のすべてがあなたの開発エリアとあなたのプロダクションエリアで異なっている可能性があることは間違いありません。デバッグ時に変更する可能性のある変数はすべて、設定ファイル内に格納する必要はありません。

ほとんどの変数に定数を使用してアドバイスします。 自動化された、たくさんのIDEオプションがあり、簡単に編集できます。言い換えれば、それを別のファイルに分割してiniのトンを解析するというより多くの論理があります。

+0

私は以前に定数を使用しましたが、プロジェクトが非常に構成可能でなければならず、コードに触れるのではなくINIファイルに触れたいという事実のために、それに対して決定しました。 Dev/prodが同じであることについては、私は非常に反対です。私はいくつかのDB接続を使用していますが、それぞれ生産と開発のサーバー、生産と開発の電子メールのエイリアス、デバッグレベル、ログレベルなどがあります。私はしかし、これらの値がprodとdevの両方で同じである共通または共有のINIを持っています –

+0

.iniファイルを開き、正しいファイルを開く必要があるということに関してもっと設定可能なものは何ですか?私はあなたがIDEの機能性を得ることはできないが、簡単に分割してパブリックディレクトリの外に置かなければならない点を除いて、大きな違いは見当たりません。 –

関連する問題