了解php工厂设计模式
我对php中的OOPS有点困惑。我试图理解php中的set-get方法。 这里是我正在寻找的简单zend框架模块了解php工厂设计模式,php,oop,zend-framework2,abstract-class,factory-pattern,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 ca
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方法的情况下返回结果。可能是它叫自动
请帮助我理解。它叫什么名字
谢谢
setHeadingTags
纯粹是response类上的一个setter。在getter中,如果数组对象为空,则它会在其中放置一个ArrayObject
。这使开发人员可以选择使用setter将项目放置在标题中,如果愿意,则在调用getHeadingTags
时为您填充
您的问题的答案是:它不会被自动调用,或者永远不会被调用,除非它尝试获取标记,此时它被检查为null,如果是,则填充空对象,然后返回空对象。例如,如果您希望添加特定的头标记,那么您可以使用所需的值从代码中调用它,此时getter会注意到它不是null并返回头标记