config.php
各ページに含まれている があります。構成では、次のような配列を作成します。
$config = array();
$config['site_name'] = 'Site Name';
$config['base_path'] = '/home/docs/public_html/';
$config['libraries_path'] = $config['base_path'] . '/libraries';
//etc...
次にfunction.php
、ほぼすべてのページに含まれており、そこにglobal $config
アクセスするために使用する必要があります-これは私が取り除きたいものです!
$config
を使用せずにコードの他の部分にアクセスするにはどうすればよいglobal
ですか?
なぜ私の例で使用すべきではないのか、誰か説明できglobal
ますか? 口調が悪いと言う人もいれば、安全ではないという人もいますか?
編集1:
どこでどのように使用するかの例:
function conversion($Exec, $Param = array(), $Log = '') {
global $config;
$cmd = $config['phppath'] . ' ' . $config['base_path'] . '/' . $Exec;
foreach ($Param as $s)
{
$cmd .= ' ' . $s;
}
}
編集2:
Vilxで提案されているように、これらすべてをクラスに入れるのはクールですが、この場合、構成key
をvalue
データベースから抽出する次のループとどのように結び付けますか。
配列を割り当てるという考えを単純化しすぎました$config
。以下に例を示します。
$sql = "SELECT * from settings";
$rsc = $db->Execute($sql);
if ( $rsc ) {
while(!$rsc->EOF) {
$field = $rsc->fields['setting_options'];
$config[$field] = $rsc->fields['setting_values'];
@$rsc->MoveNext();
}
}
編集3:
vars
その上、 configで設定されている機能から他の機能にアクセスする必要があり、それらのいくつかは次のとおり$db
です$language
。
それらをクラスに入れれば、本当に何かが解決しますか? 実際に使用するglobal
と何が変わるの?
編集4:
PHP global in functionsを読んだところ、Gordonが を使用すべきではない理由を非常にうまく説明していますglobal
。global
私はすべてに同意しますが、変数を再割り当てするために私の場合は使用しません<-- WTF!!
。しかし、関数からデータベースにアクセスする必要があるglobal $db
場合は、この場合の問題はどこにありますか? を使用せずに、他の方法でこれを行うにはどうすればよいですglobal
か?
編集5:
同じ PHP global in functions でdecezeは次のように述べています。
しかし、ここでは基本的な「INIT」について話しています。私は基本的に設定define
しますが、使用しますvars
-まあ、それは技術的に間違っています。しかし、あなたの関数は何にも依存していません-しかし、$db
覚えておくことができる1つのvarの名前ですか? を使用するのは本当にグローバルな必要性$db
です。ここで DEPENDENCY はどこにあり、それ以外の場合はどのように使用するのですか?
PSここで、私たちは2つの異なる心の対立に直面していると思いました。たとえば、私のもの(オブジェクト指向プログラミングをまだよく理解していない)と、OOPの教祖(私の現在の観点から)と呼ばれる可能性のある人たちです。 -私にとって彼らにとって明白に見えることは、新しい質問を引き起こします。それが、この質問が何度も繰り返されている理由だと思います。個人的には、最終的にはより明確になりましたが、まだ明確にしなければならないことがあります。