2012-03-12 10 views
1

複数のオブジェクトをコンフィグレーション配列に格納しています。私は設定変数をしますprint_rときにオブジェクトのデータを参照しています。このオブジェクトを2回呼び出すと、オブジェクトが配列に格納されていても、以前に返されたデータがオーバーライドされます。

class Test 
{ 
    private $config = array(); 

    public function __construct() 
    { 
     $this->abc(); 
     $this->def(); 
    } 

    public function abc() 
    { 
     $this->config['abc'] = new someClass('abc'); 
    } 

    public function def() 
    { 
     $this->config['def'] = new someClass('def'); 
    } 

    public function printTest() 
    { 
     return $this->config; 
    } 
} 

class someClass 
{ 
    public function __construct($value) 
    { 
     echo $value; 
    } 
} 

私の問題のような例えば

。私が理解できないのは、最初のオブジェクトabcの値をエコーすることができない理由です。defという2番目のオブジェクトをconfig配列に格納してみてください。

答えて

0

あなたが設定[「DEF」]を印刷したい場合は、あなたがそれはあなたが望むデータであることを表現する必要があります。今では

$this->config 

はあなただけ)私はprintSomething(という名前の関数のように感じ、個人的に

return $this->config['def']; 

を言う画面にデータを印刷する必要があり

array('abc'=>'abc', 'def'=>'def') 

である(あるいは少なくともを返します文字列なので、私は

function printConfig() 
{ 
    $tmp = ""; 
    foreach($this->config as $key=>$value) 
    { 
     $tmp .= "Config option:{$key} value is {$value}<br>"; 
    } 
    return $tmp; 
} 
+0

説明してくださいと言うと思います、私は今好奇心が強い。 setterを '__call()'関数で呼び出すべきですか? – Eli

+0

私はその質問を誤解しました。新しい答えが渡されます。また、私が$ this-> config ['def']を返すと言っているように、$ this-> config ['abc']と言うことができます – Jake

関連する問題