2016-04-08 20 views
1

我想知道如果對象可以猜測他的「所有者」的類,如果「所有者」具有對象類的屬性。對象用作屬性猜測他所有者的類

讓我解釋什麼,我通過一個小例子

class A { 
    public function Magic(){/*return owner's class*/} 
} 

class B { 
    private $foo; 
    public function __construct() { 
     $this->foo=new A(); 
    } 
    public function getFoo(){ 
     return $this->foo; 
    } 
} 

class C { 
    private $bar; 
    public function __construct() { 
     $this->bar=new A(); 
    } 
    public function getBar(){ 
     return $this->bar; 
    } 
} 
$b= new B(); 
$c= new C(); 
print($b->getFoo()->Magic()); // would print B 
print($c->getBar()->Magic()); // would print C 

我不知道如果我在做夢,或者如果有可能的意思是...

你會怎樣做,如果不可能的?

回答

0

你需要注入他的主人A。因此,Magic方法不太「神奇」,但依賴性更清晰。

class A 
{ 
    private $owner; 

    public function __construct($owner) 
    { 
     $this->owner = $owner; 
    } 

    public function Magic() { return get_class($this->owner); } 
} 

class B 
{ 
    private $foo; 

    public function __construct() 
    { 
     $this->foo = new A($this); 
    } 

    public function getFoo() 
    { 
     return $this->foo; 
    } 
} 

class C 
{ 
    private $bar; 

    public function __construct() 
    { 
     $this->bar = new A($this); 
    } 
    public function getBar() 
    { 
     return $this->bar; 
    } 
} 
$b= new B(); 
$c= new C(); 

print($b->getFoo()->Magic()); // would print B 
print($c->getBar()->Magic()); // would print C 
+0

好的謝謝:)所以這次沒有魔力^^ –