0

これは奇妙な質問のように思えるかもしれませんが、2つのクラスがあると言います。

class Class1 {
    private $foo;
    function addBar(Class2 &$bar)
    {
        $this->foo = $bar;
    }
}


class Class2 {
    private $foo
}

$a = new Class1;
$b = new Class2;
$a->addBar($b);

Class2から情報を読み取る方法はありますClass1か?ここでは同じコードブロックにありますが、私のスクリプトでは別々のファイルにあります。これが必要な理由はClass2、参照によってリンクしているが、Class2実行するまで実行が許可されておらず、参照する別の変数(たとえば)Class1を渡すことができることを知っているためですが、可能であればそれを避けたいと思います。Class2Class1$b->addFoo($a)

これができることを願っています!
前もって感謝します

編集

助けてくれたみんなのおかげで、私はそれを別の方法で回避することにしました。ありがとうございました。

4

3 に答える 3

1
class Class1 {
    private $foo;
    function addBar(Class2 $bar)
    {
        $this->foo = $bar;
        $bar->addBar($this);
    }
}

class Class2 {
    private $foo
    function addBar(Class1 $bar)
    {
        $this->foo = $bar;
    }
}

$a = new Class1;
$b = new Class2;
$a->addBar($b);
于 2012-04-18T12:27:19.950 に答える
0

Class2Class1プライベートデータにアクセスすることはできませんが、オブジェクトのメソッドを呼び出すことはできます。Class1ただし、インスタンスのメソッドを呼び出すには、インスタンスへの参照が必要です。

あなたの例は実際にコードを含んでいることを示しておらずClass2、でメソッドを呼び出さないようにしようとしているようです$b。それは意味がありません。 メソッドを呼び出さないと、何もClass2「実行」できません。

于 2012-04-18T12:23:23.180 に答える
0
class Class1 {
    private $foo;
    function addBar(Class2 &$bar)
    {
        $this->foo = $bar;
        $bar->doSomething();
    }
}


class Class2 {
    private $foo
    function doSomething()
    {
        //code
    }
}

$a = new Class1;
$b = new Class2;
$a->addBar($b);

このようdoSomethingにinはinの後にClass2()実行されますaddBar()Class1

于 2012-04-18T12:27:45.550 に答える