friendica-addons/dav/SabreDAV/lib/Sabre/VObject/Node.php

150 lines
3.0 KiB
PHP

<?php
/**
* Base class for all nodes
*
* @package Sabre
* @subpackage VObject
* @copyright Copyright (C) 2007-2012 Rooftop Solutions. All rights reserved.
* @author Evert Pot (http://www.rooftopsolutions.nl/)
* @license http://code.google.com/p/sabredav/wiki/License Modified BSD License
*/
abstract class Sabre_VObject_Node implements IteratorAggregate, ArrayAccess, Countable {
/**
* Turns the object back into a serialized blob.
*
* @return string
*/
abstract function serialize();
/**
* Iterator override
*
* @var Sabre_VObject_ElementList
*/
protected $iterator = null;
/**
* A link to the parent node
*
* @var Sabre_VObject_Node
*/
public $parent = null;
/* {{{ IteratorAggregator interface */
/**
* Returns the iterator for this object
*
* @return Sabre_VObject_ElementList
*/
public function getIterator() {
if (!is_null($this->iterator))
return $this->iterator;
return new Sabre_VObject_ElementList(array($this));
}
/**
* Sets the overridden iterator
*
* Note that this is not actually part of the iterator interface
*
* @param Sabre_VObject_ElementList $iterator
* @return void
*/
public function setIterator(Sabre_VObject_ElementList $iterator) {
$this->iterator = $iterator;
}
/* }}} */
/* {{{ Countable interface */
/**
* Returns the number of elements
*
* @return int
*/
public function count() {
$it = $this->getIterator();
return $it->count();
}
/* }}} */
/* {{{ ArrayAccess Interface */
/**
* Checks if an item exists through ArrayAccess.
*
* This method just forwards the request to the inner iterator
*
* @param int $offset
* @return bool
*/
public function offsetExists($offset) {
$iterator = $this->getIterator();
return $iterator->offsetExists($offset);
}
/**
* Gets an item through ArrayAccess.
*
* This method just forwards the request to the inner iterator
*
* @param int $offset
* @return mixed
*/
public function offsetGet($offset) {
$iterator = $this->getIterator();
return $iterator->offsetGet($offset);
}
/**
* Sets an item through ArrayAccess.
*
* This method just forwards the request to the inner iterator
*
* @param int $offset
* @param mixed $value
* @return void
*/
public function offsetSet($offset,$value) {
$iterator = $this->getIterator();
$iterator->offsetSet($offset,$value);
}
/**
* Sets an item through ArrayAccess.
*
* This method just forwards the request to the inner iterator
*
* @param int $offset
* @return void
*/
public function offsetUnset($offset) {
$iterator = $this->getIterator();
$iterator->offsetUnset($offset);
}
/* }}} */
}