2016-04-08 8 views
1

Bir nesnenin "sahibi" nesnesinin nesne sınıfının bir özelliğine sahip olması durumunda "sahibinin" sınıfını tahmin etmesinin mümkün olup olmadığını merak ediyordum. nesnesi, mülk sahibi olarak sahibinin sınıfını tahmin ediyor

nasıl mümkün değilse yapardı ... bana küçük bir örnek

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 

Ben rüya veya eğer mümkünse am bilmiyorum ile ne demek açıklayalım?

cevap

0

Onun sahibine A enjekte etmeniz gerekir. Yani, Magic yöntemi daha az "büyülü", ancak bağımlılık daha açık.

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

tamam teşekkürler :) bu yüzden benim için sihir bu sefer ^^ –