2013-11-22 174 views
0

我有一個問題,就是它可以添加動力學性質反對像動態對象屬性

private function get_invoice_info($data, array $rel) 
{ 
    foreach ($data as $info) 
    { 
     foreach($rel as $val) 
     { 
      $info->$val->$val->etc; 
     } 
    } 

    return $value; 
} 

問題是,對象的屬性可以是一個對象,有它自己的屬性或關係。

Like $info->contract and $info->contract->contractor

+0

這是可能的,但你會恨自己連4周,如果你開始規劃這個樣子。它是一個地獄調試(除了其他嚴重缺點)。 – KingCrunch

+1

尋找像__get和__set這樣的魔術方法,它們可以讓你達到你想要的效果。或者使用stdClass。但請注意,這不是一個好的軟件設計。 – sjkm

回答

1

如果還不存在的對象,你需要創建它們:

$info->$foo = new stdClass; 
$info->$foo->$bar = new stdClass; 
$info->$foo->$bar->$baz = 42; 

但我不明白這一點在做這個了簡單地使用數組。 stdClass對象真的不給你任何好處,而且數組可以隱式地創建一個無限的深度: