1

private member を持つクラスがあり$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 に答える