2016-11-06 60 views
0

我有一個主PHP類如此屬性:PHP類與具有對象是可訪問這些對象

class MyClass { 
    public $a; 
    public $b; 

    function __construct() 
    { 
     $this->a = new \SomeClass(); 
     $this->b = 'some string'; 
    } 
} 

是有辦法,其被存儲在$aSomeClass)屬性的類可以訪問$b值,它實際上是存儲在啓動$aMyClass)的類中的屬性?

+2

你將不得不在MyClass的對象傳遞給SomeClass通過在構造函數中發送'$ this'或者在創建對象後設置它。如果您打算在實例化後使用SomeClass中的任何其他位置,則需要將MyClass作爲屬性存儲。 – segFault

+0

編輯完成後,我希望它現在更清晰。 – Broshi

+0

@sebastianForsberg多數民衆贊成在我腦海中,但我認爲可能有不同的方式。 – Broshi

回答

1

你可以做這樣的事情:

class MyClass { 
    public $a; 
    public $b; 

    function __construct() 
    { 
     $this->a = new \SomeClass($this); 
     $this->b = 'some string'; 
    } 
} 

class SomeClass { 
    public $mc; 

    function __construct(MyClass $mc) 
    { 
     $this->mc = $mc; 
    } 
} 

$myClass = new MyClass(); 
echo $myClass->a->mc->b; 

輸出將是:some string

0

你可以做這樣的事情:

class MyClass { 
    public $a; 
    public $b; 

    function __construct() 
    { 
     $this->b = 'some string'; 
     $this->a = new \SomeClass($this->b); 
    } 
} 

class SomeClass{ 

    function __construct($b) 
    { 
     echo $b; // it will become a $this->b as given while creating new class in MyClass 
    } 
} 
+0

就這樣你知道,如果'MyClass :: $ b'改變了,它將不會被反映在SomeClass對象中,如果這樣做的話。 – segFault

+0

你是對的:)所以我認爲你的解決方案可能會更好,如果他會創建一個新的類,並不是所有的變量設置。 –