$a->;b=new cl();如何调用$a->;x()从$a->;b->;c(),而不必将$a作为参数


$a->b = new cl(); How to call $a->x() from within $a->b->c() without having to pass $a as an argument to c();

PHP

class ClA {
    var $b;
    function clA()
    {
        $this->b = new ClB();
    }
    function x()
    {
      echo "testing";
    }
}        

class ClB {
    function clB()
    {
    }
    function c ($a)
    {
       $a->x();
    }
}
$a = new ClA();
$a->b->c($a);

如何调用c((而不必传递$a;

调用作为成员的方法上一层的对象到当前对象其方法正在被调用。

function c ()
{
   ??->x();
}

?=>object一级到当前对象,此方法是其成员

class ClA {
    public $b;
    public function __construct() {
        $this->b = new ClB($this);
    }
    public function x() {
      echo "testing";
    }
}        

class ClB {
    private $a;
    public function __construct($a) {
        $this->a = $a;
    }
    public function c () {
       $this->a->x();
    }
}
$a = new ClA();
$a->b->c();

演示

请注意,我已将您的类从PHP4 更新为PHP5