2011-12-04 12 views
3

私のHelperClass()のグローバル$エラーが空になって、なぜ$ class-> errorが本当にいっぱいになっているのか分かりません。以前のデータで。クラス内の名前空間とグローバル変数の問題

この場合、名前空間に関する問題がありますか?私にいくつかの指摘をお願いします。

ここに、関連するコードの一部を示します。メインファイルの下

namespace Core; 
$class = new ControllerClass(); 
$error = $class->error; 
// verified that $error prints correctly here 
include ViewFile.php; 

helperClassの下でViewFile.php

$helper = new HelperClass(); 
// __autoload function took care of the include 

の下で:

namespace Core\Skeleton; 

class HelperClass { 
public function __construct() { 
global $error; 
// $error != $class->error as defined earlier  
// $error is empty here 
} 

答えて

9

あなたは別のヘルパーの中から自分のクラスをオートローダを使用するか、または含まれている場合関数では、$error変数は決して 'グローバル'スコープで宣言されませんでした。それは地元で終わり、処分されました。

値を割り当てる前に共有を宣言してください。

namespace Core; 
$class = new ControllerClass(); 
global $error; 
$error = $class->error; 

また、共有変数自体に問題はありませんが、 $errorという名前はやや一般的すぎるようです。たぶん、あまり曖昧でないか、より構造化された交換変数を使用することができます。 $GLOBALS["/var/log"]["controller_error"]または何かarrayish。

+0

ありがとうございます!それはうまくいった! – blacklotus

関連する問題