2010-12-08 7 views
0

私はdb接続情報のようにいくつかの定数を保持したいsettings.phpファイルを持っています。PHPはグローバル変数をカプセル化します

私は何を達成したいが、私の人生のために、私はそれを行う方法を見つけ出すことはできませんが、私は私のsettings.php内のすべての定数は、グローバルに使用したくない...です。私はMVCセットアップを使用しています。たとえば、私のコントローラで使用できるdb接続情報がありません。

私の質問は、私は、セットアップの設定は、このようなファイルはどうすればよいです:私のDB接続定数がそのようにちょうど私のModelクラスにカプセル化されるように、自分のアプリケーションにロードし、その後

class Settings { 

    const HOST = 'localhost'; 

    .... 

    const DEBUG = true; 
} 

私はこのことについて私が説明できるわけではありませんが、基本的に私はAにしたいと思います:すべての設定とBの中心的な場所があります。アプリケーションがグローバルに利用できるわけではありません。

私はに実行した問題は、私は私の親クラスでのsettings.phpファイルを含める場合、それから、固有のクラスもすべてのsettings.phpへのアクセス権を持っているということです。

+0

このような定数のポイントは何ですか?通常の変数を使用し、PDO接続を作成し、それらの変数の設定を解除する(またはGCに処理させる)。 – Crozin

+0

何かが構成されている場合、値を変更することはできません。だから、それは問題ではないと思いますか? – imns

答えて

1

関数でラップして呼び出します(例:

function init() { 
    $model = new Model; 
    $model->setConfigurationValue('name', 'value); 
    // etc ... 
} 
init(); 

このようにグローバルには何もありません。

個人的には、構成をYAMLファイルに保存するライブラリを使用します.YAMLファイルは、どこからでもアクセスでき、状態の変更を防ぐシングルオブジェクトのConfigurationオブジェクトに自動的に読み込まれます。私のDEV環境が余分に設定を追加するように、などのコードをいじってなくて設定を変更し、私は複数のYAMLファイルを使用して簡単に

+0

YAMLが外部ファイルにこのような設定を保存していることは気にしませんが、IMHOの方法はあります。 – mhitza

+0

ええ;私がSymfony YAMLライブラリについて好んだことは、PHPをYAMLにも埋め込むことができることです。奇妙だが便利だ。どのようなアプローチを取っていますか? INIファイル?他に何か? –

+0

外部ファイルは、settings.phpファイルで何をしようとしています。私はYAMLの発見されていません。 – imns

0

私は「local_settings.php」というファイルに自分のクラスを定義します。 ファイルを "インクルード"し、あなたのクラスをあなたのPHPプログラムの先頭にinstansiateしてください。これらは本当にグローバルな値の一種であるグローバルについてwhinges誰にとって

!別のDBに接続する異なるモデルのモデルで作業したい別のクラスを持つことはまずありません。

関連する問題