即使对象存储在数组中,调用对象两次也会覆盖先前返回的数据

时间:2012-03-12 07:44:31

标签: php

我将多个对象存储到配置数组中。

例如像这样

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的值。

1 个答案:

答案 0 :(得分: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;
}