2014-05-04 125 views
0

我在PHP和OOPS有點困惑。我試圖瞭解在PHP中設置獲取方法。 ,關於我在找瞭解PHP的工廠設計模式

https://github.com/blanchonvincent/SimplePageCrawler 

public function getHeadingTags() 
{ 
    if(null === $this->headingTags) { 
     $this->setHeadingTags(new ArrayObject()); // here called but empty array passed 
    } 
    return $this->headingTags; 
} 

public function setHeadingTags($headingTags) 
{ 
    if(is_array($headingTags)) { 
     $this->getHeadingTags()->exchangeArray($headingTags); 
     return $this; 
    } 
    if(!$headingTags instanceof ArrayObject) { 
     throw new Exception\InvalidArgumentException('Heading tags must be an array or an ArrayObject'); 
    } 
    $this->headingTags = $headingTags; 
    return $this; 
} 
$crawler = $this->getServiceLocator()->get('SimplePageCrawler'); 
$page = $crawler->get('http://cnn.com'); 
print_r($page->getHeadingTags()); // this method return results very well 

,但我想明白了,它是如何返回結果,而不調用setHeadingTags方法簡單這裏Zend框架模塊。可能是其所謂的汽車。

請幫我明白了。它怎麼叫 謝謝

回答

0

setHeadingTags純粹是響應類的setter。在吸氣劑中,如果它是空的,它會在其中放置一個ArrayObject。這使得開發者可以根據需要使用setter將項目放置到標題中,如果不是的話,那麼當getHeadingTags被調用時,它將被填充。

您的問題的答案:它不會自動調用,或者永遠不會自動調用,除非它試圖獲取標記,此時檢查它爲空,如果填充空對象,則返回空目的。例如,如果您希望添加特定的標題標籤,則可以使用所需的值從代碼中調用該標籤,此時getter會注意到它不爲空並返回標題標籤。