You are here

abstract class AbstractEntry in Zircon Profile 8

Same name in this branch
  1. 8 vendor/zendframework/zend-feed/src/Reader/AbstractEntry.php \Zend\Feed\Reader\AbstractEntry
  2. 8 vendor/zendframework/zend-feed/src/Reader/Extension/AbstractEntry.php \Zend\Feed\Reader\Extension\AbstractEntry
  3. 8 vendor/zendframework/zend-feed/src/Reader/Entry/AbstractEntry.php \Zend\Feed\Reader\Entry\AbstractEntry
Same name and namespace in other branches
  1. 8.0 vendor/zendframework/zend-feed/src/Reader/Extension/AbstractEntry.php \Zend\Feed\Reader\Extension\AbstractEntry

Hierarchy

Expanded class hierarchy of AbstractEntry

File

vendor/zendframework/zend-feed/src/Reader/Extension/AbstractEntry.php, line 17

Namespace

Zend\Feed\Reader\Extension
View source
abstract class AbstractEntry {

  /**
   * Feed entry data
   *
   * @var array
   */
  protected $data = [];

  /**
   * DOM document object
   *
   * @var DOMDocument
   */
  protected $domDocument = null;

  /**
   * Entry instance
   *
   * @var DOMElement
   */
  protected $entry = null;

  /**
   * Pointer to the current entry
   *
   * @var int
   */
  protected $entryKey = 0;

  /**
   * XPath object
   *
   * @var DOMXPath
   */
  protected $xpath = null;

  /**
   * XPath query
   *
   * @var string
   */
  protected $xpathPrefix = '';

  /**
   * Set the entry DOMElement
   *
   * Has side effect of setting the DOMDocument for the entry.
   *
   * @param  DOMElement $entry
   * @return AbstractEntry
   */
  public function setEntryElement(DOMElement $entry) {
    $this->entry = $entry;
    $this->domDocument = $entry->ownerDocument;
    return $this;
  }

  /**
   * Get the entry DOMElement
   *
   * @return DOMElement
   */
  public function getEntryElement() {
    return $this->entry;
  }

  /**
   * Set the entry key
   *
   * @param  string $entryKey
   * @return AbstractEntry
   */
  public function setEntryKey($entryKey) {
    $this->entryKey = $entryKey;
    return $this;
  }

  /**
   * Get the DOM
   *
   * @return DOMDocument
   */
  public function getDomDocument() {
    return $this->domDocument;
  }

  /**
   * Get the Entry's encoding
   *
   * @return string
   */
  public function getEncoding() {
    $assumed = $this
      ->getDomDocument()->encoding;
    return $assumed;
  }

  /**
   * Set the entry type
   *
   * Has side effect of setting xpath prefix
   *
   * @param  string $type
   * @return AbstractEntry
   */
  public function setType($type) {
    if (null === $type) {
      $this->data['type'] = null;
      return $this;
    }
    $this->data['type'] = $type;
    if ($type === Reader\Reader::TYPE_RSS_10 || $type === Reader\Reader::TYPE_RSS_090) {
      $this
        ->setXpathPrefix('//rss:item[' . ($this->entryKey + 1) . ']');
      return $this;
    }
    if ($type === Reader\Reader::TYPE_ATOM_10 || $type === Reader\Reader::TYPE_ATOM_03) {
      $this
        ->setXpathPrefix('//atom:entry[' . ($this->entryKey + 1) . ']');
      return $this;
    }
    $this
      ->setXpathPrefix('//item[' . ($this->entryKey + 1) . ']');
    return $this;
  }

  /**
   * Get the entry type
   *
   * @return string
   */
  public function getType() {
    $type = $this->data['type'];
    if ($type === null) {
      $type = Reader\Reader::detectType($this
        ->getEntryElement(), true);
      $this
        ->setType($type);
    }
    return $type;
  }

  /**
   * Set the XPath query
   *
   * @param  DOMXPath $xpath
   * @return AbstractEntry
   */
  public function setXpath(DOMXPath $xpath) {
    $this->xpath = $xpath;
    $this
      ->registerNamespaces();
    return $this;
  }

  /**
   * Get the XPath query object
   *
   * @return DOMXPath
   */
  public function getXpath() {
    if (!$this->xpath) {
      $this
        ->setXpath(new DOMXPath($this
        ->getDomDocument()));
    }
    return $this->xpath;
  }

  /**
   * Serialize the entry to an array
   *
   * @return array
   */
  public function toArray() {
    return $this->data;
  }

  /**
   * Get the XPath prefix
   *
   * @return string
   */
  public function getXpathPrefix() {
    return $this->xpathPrefix;
  }

  /**
   * Set the XPath prefix
   *
   * @param  string $prefix
   * @return AbstractEntry
   */
  public function setXpathPrefix($prefix) {
    $this->xpathPrefix = $prefix;
    return $this;
  }

  /**
   * Register XML namespaces
   *
   * @return void
   */
  protected abstract function registerNamespaces();

}

Members

Namesort descending Modifiers Type Description Overrides
AbstractEntry::$data protected property Feed entry data
AbstractEntry::$domDocument protected property DOM document object
AbstractEntry::$entry protected property Entry instance
AbstractEntry::$entryKey protected property Pointer to the current entry
AbstractEntry::$xpath protected property XPath object
AbstractEntry::$xpathPrefix protected property XPath query
AbstractEntry::getDomDocument public function Get the DOM
AbstractEntry::getEncoding public function Get the Entry's encoding
AbstractEntry::getEntryElement public function Get the entry DOMElement
AbstractEntry::getType public function Get the entry type
AbstractEntry::getXpath public function Get the XPath query object
AbstractEntry::getXpathPrefix public function Get the XPath prefix
AbstractEntry::registerNamespaces abstract protected function Register XML namespaces
AbstractEntry::setEntryElement public function Set the entry DOMElement
AbstractEntry::setEntryKey public function Set the entry key
AbstractEntry::setType public function Set the entry type
AbstractEntry::setXpath public function Set the XPath query
AbstractEntry::setXpathPrefix public function Set the XPath prefix
AbstractEntry::toArray public function Serialize the entry to an array