2012-03-12 90 views
1

我正在将多个对象存储到配置数组中。即使对象存储在数组中,调用对象两次也会覆盖先前返回的数据

例如像这样

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; 
    } 
} 

我的问题,我看到的对象数据时,我的print_r的配置变量。我不明白的是为什么我不能回显第一个对象abc的值后,我尝试将第二个对象def存储到配置数组中。

回答

0

当你想打印config ['def']时,你需要表达那是你想要的数据。现在

$this->config 

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

你刚才说

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

就个人而言,我觉得自己像一个名为printSomething(功能)应该将数据打印到屏幕(或至少返回字符串,所以我会说

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

请解释一下,我很好奇。我应该在'__call()'函数中调用setter吗? – Eli 2012-03-12 08:00:34

+0

我误解了这个问题。新的答案通过更新。此外,正如我所说的返回$ this-> config ['def']我可以说$ this-> config ['abc'] – Jake 2012-03-12 08:14:19