我有一个有私人成员$content
的班级。这由get-method包装:
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
的引用,这是我不明白的。我怎样才能获得价值?提前谢谢。
答案 0 :(得分: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。
答案 1 :(得分: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"
答案 2 :(得分: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] = ''