2013-09-27 31 views
1

我想從下面伸出類從鏈接方法得到的結果,PHP:從擴展類的鏈接方法中獲得結果?

class Base 
{ 
    protected $id; 

    public function setId($input) { 

     $this->id = $input; 

     return $this; 
    } 
} 

class PageChildren extends Base 
{ 
    public function getID() 
    { 
     return $this->id; 
    } 
} 


class Page extends Base 
{ 
    public $hasChidren; 

    public function __construct() 
    { 
     $this->hasChidren = new PageChildren(); 
    } 
} 

$page = new Page(); 
var_dump($page->setId(10)->hasChidren->getID()); 

,但我得到null而不是10。我該怎麼做才能做到這一點?

回答

1
$page->hasChidren->setId(10); 
var_dump(page->hasChidren->getID(); 
2

你得到hasChidren的ID,它的類型是PageChildren的一個新的對象,其ID從未設置,你不能訪問型基地的原始對象到您設定的ID

您創建一個頁面對象,當你創建它時,他的一個屬性包含一個PageChildren對象。然後你設置你的頁面對象的ID。最後,您將從PageChildren對象獲取ID,而不是Page對象。

1

,因爲你越來越NULL當你做一個

$page = new Page(); 

構造函數將運行第一個它有getID()方法。方法getID()沒有任何東西可以返回,因此你得到一個NULL