2011-07-13 6 views
1

PHPアプリケーションでグローバルな情報(パス、DBパスワード、タイムゾーンなど)を提供するにはどうすればいいですか?私は、グローバル変数は安全ではないことを知っていますが、どのように共通のCMSはこの問題を処理するのですか?私はすでにWordpressを見ていましたが、WPは高いセキュリティ基準で有名ではありません。PHPアプリケーションでグローバルな情報を提供する(安全な方法)

私はDependency Injectionについて少しは読んだことがありますが、これはこれを処理する一般的な方法ですか?

全体的に、私は一種のグローバル(ただし制御*)情報を提供したいと思います。

*許可されたオブジェクトだけが必要な情報を取得できるように、提供されたデータを制御することは可能ですか?

+0

のようなグローバルな情報を得ることができ、あなたのPHPファイルには、あなた適切なオブジェクトでプライベート情報をラップすると、stuffはまだファイルのどこかにリストされ、関連するPHPコードを実際に実行することなく、簡単に解析することができます。 –

+0

duplicated ........ – dynamic

+0

@ yes123:^^無駄なコメントは役に立たない。関連する回答への参照を含む質問を閉じるためのリンクおよび/または投票を提供する。 –

答えて

1

依存性注入はセキュリティとは関係ありません。これは設計パターンであり、一般的な問題を適切な方法で解決するための戦略です。

私は、通常、すべてのタイプの情報のためのメソッドを提供するCSettingsクラスを作成しますが、すべてメソッドを使用して一般的な方法で行います。

次に、特定のアプリケーションで使用する場合、特定のアプリケーションの正しい/具体的な値を返すように、CSettingsをサブクラス化します。

情報を促進する別の方法は、レジストリパターン。

-1

これには多くの学校があります。最も基本的な実装はおそらく、定数を設定するグローバルコンフィグレーションファイルです。define()

このメソッドを広く使用したフレームワークと、データベースアクセスとドメイン設定のためのシングルトンを併用していました。これは広く使われていますが、一般的に深い依存関係注入では、単一のパッケージに同じファイル内で動作させるためのすべての定義が含まれているため、構成の定義をクラス固有にすることが現代的で再利用可能です。

http://misko.hevery.com/2009/01/14/when-to-use-dependency-injection/

これは、依存性注入の細かい点についての素晴らしい記事です。覚えておくべき重要なことは、オブジェクトが現在のスコープ内で直接必要とされる場合、オブジェクトはインスタンス化または他のオブジェクトのハンドオフのみを行うことです。著者はすばらしい詳細を得ます。

HTMLPurifierのようなもっと有名なライブラリの多くは、オブジェクトインスタンスのコンストラクタに渡される構成オブジェクトを使用して作成されます。これは、オブジェクトの設定が非常に複雑でネストされている場合には、良いアプローチです。

+0

私はより大きなプロジェクトで私たちの設定のトラックを緩めるのは簡単だから、私は定義を使いたくありません。したがって、私はxmlまたはiniファイルを使用して情報を格納し、Infosを処理するオブジェクトを使用します。今私はプロジェクトインスタンス間で情報を渡す効率的な方法を探しています。 – NaN

2

設定ファイル(.ini)を使用できます。このPHP関数parse_ini_fileで使いやすいです。

あなたはそのようにそれを使用することができます:

[global-information] 

path : your_path 
DB_passwords : your_password 
Timezone : your_timezone 

config.iniの場合でも...あなたはそれがPHPだと

$ini_array= parse_ini_file("config.ini",true); 

$path = $ini_array['global-information']['path']; 
+0

私は、オブジェクト/ファイルなどの間で変数を処理して渡す方法(分散データ)を探していますが、それらを格納する方法ではありません。 – NaN

+0

@NaN構成ファイルとレジストリデザインパターンを組み合わせることができます – chafank

関連する問題