1

我有一个有私人成员的班级$content。这是由 get 方法包装的:

class ContentHolder
{
    private $content;
    public function __construct()
    {
        $this->content = "";
    }

    public function getContent()
    {
        return $this->content;
    }
}
$c = new ContentHolder();
$foo = array();
$foo['c'] = $c->getContent();

现在$foo['c']是对 的引用content,这是我不明白的。我怎样才能获得价值?先感谢您。

4

3 回答 3

5

我刚刚尝试了您的代码,$foo['c']并不是对$content. (分配一个新值$foo['c']不影响$content。)

默认情况下,所有 PHP 函数/方法按值传递参数并按值返回。要通过引用返回,您需要对方法定义使用以下语法:

public function &getContent()
{
    return $this->content;
}

调用方法时的语法如下:

$foo['c'] = &$c->getContent();

请参阅http://ca.php.net/manual/en/language.references.return.php

于 2008-11-18T22:33:30.057 回答
3

我不太明白你的问题。说你改变了:

public function __construct() {
    $this->content = "test";
}

$c = new ContentHolder();
$foo = array();
$foo['c'] = $c->getContent();

print $foo['c'];          // prints "test"
print $c->getContent();   // prints "test"
于 2008-11-18T22:31:04.370 回答
1

在 PHP 中,您不说:“ $foo = new array();”,而是简单地说:“ $foo = array();

我运行了您的代码(PHP 5.2.6),它似乎工作正常。我通过转储数组对其进行了测试:

var_dump($foo);

这输出:

array(1) {
  ["c"]=>
  string(0) ""
}

我也可以简单地使用echo

echo "foo[c] = '" . $foo['c'] . "'\n";

这输出:

foo[c] = ''
于 2008-11-18T22:21:05.760 回答