了解php工厂设计模式

时间:2014-05-04 05:16:52

标签: php oop zend-framework2 abstract-class factory-pattern

我对PHP中的OOPS感到困惑。我想在php中理解set get方法。 这里简单的zend框架模块,我正在寻找

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方法的情况下返回结果。可能是它的名字auto。

请帮助我理解。怎么称呼 谢谢

1 个答案:

答案 0 :(得分:0)

setHeadingTags纯粹是响应类的setter。在getter中,如果它为空,则会在其中放置ArrayObject。如果您愿意,这为开发人员提供了使用setter将项目放在标题中的选项,如果没有,那么在调用getHeadingTags时将为您填充。

您的问题的答案:除了尝试获取标记之外,它不会自动或永远调用,此时检查它是否为空,如果填充空对象,则返回空对象。例如,如果您希望添加特定的标题标记,则可以使用所需的值从代码中调用它,此时getter会注意到它不是null并返回标题标记。