2011-01-18 2 views
0

cの私は、このindex.phpファイルはお知らせにもこだわりました:未定義の変数:

# Loading configurations. 
loadConfiguration('database'); 
loadConfiguration('site'); 

# Initializing the database connection. 
$db = new database($c['db']['host'], $c['db']['username'], $c['db']['password'], $c['db']['name']); 
unset($c['db']['password']); 

とloadConfiguration()を持っては、以下のように設定されています

function loadConfiguration($string) { require(path.'config/'.$string.'.con.php'); } 

私はdatabase.con.phpことを確認しましたとsite.con.phpはconfig /フォルダにあります。 と私は得る唯一のエラーはお知らせです:未定義の変数:次の行で

$db = new database($c['db']['host'], $c['db']['username'], $c['db']['password'], $c['db']['name']); 

cはここでdatabase.con.php

# Ignore. 
if (!defined('APP_ON')) { die('Feel the rain...'); } 

$c['db']['host'] = 'localhost'; 
$c['db']['username'] = 'root'; 
$c['db']['password'] = ''; 
$c['db']['name'] = 'name'; 

はここsite.con.php

だです
# Ignore. 
if (!defined('APP_ON')) { die('Feel the rain...'); } 

/* Site informations */ 
$c['site']['name'] = 'Namek'; 
$c['site']['mail'] = '[email protected]'; 
$c['site']['enable-email'] = false; 
$c['site']['debug-mode'] = true; 

私は間違っていますか?

答えて

0

requireコードは関数内で実行されるため、$cはローカル変数であり、グローバルスコープではアクセスできません。

あなたは$cは、グローバル(例えばレジストリ(R::$cR::get('c')、環境($this->env->c)、...)を使用するために、いくつかの派手なデザインパターンを使用することができますいずれか、またはあなたはの名前を返すために、コンフィギュレーション・ローダ機能を変更することができますそれのファイルとrequire外:

require_once configFile('database'); 

function configFile($name) { 
    return path . 'config/' . $name . '.con.php'; 
} 
+0

どのように私はこの問題を解決することができ – Shoe

+0

でしょう。。?あなたは最新のovを提案する他の人?必要なファイルの中で 'グローバル'を使うのはどうですか? – Shoe

+0

@Charlie: 'global'を使っても役に立ちません。 'global'は、グローバル変数をローカルで利用できるようにするために使われます。最後の変種を使用することをお勧めします。 ) – NikiC

0

セキュリティ目的に従ってグローバル変数を使用しないでくださいあなたは、レジストリ変数にあなたの変数を設定し、それをアクセスすることができます

関連する問題