From f6c4b70070a8e4378a37f750d53920e44bcc5857 Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Tue, 20 Jan 2015 21:52:37 +0100 Subject: One class per file: framework/Xml --- framework/Xml/TXmlElementList.php | 81 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 framework/Xml/TXmlElementList.php (limited to 'framework/Xml/TXmlElementList.php') diff --git a/framework/Xml/TXmlElementList.php b/framework/Xml/TXmlElementList.php new file mode 100644 index 00000000..301f9d1e --- /dev/null +++ b/framework/Xml/TXmlElementList.php @@ -0,0 +1,81 @@ + + * @link http://www.pradosoft.com/ + * @copyright Copyright © 2005-2014 PradoSoft + * @license http://www.pradosoft.com/license/ + * @package System.Xml + */ + +/** + * TXmlElementList class. + * + * TXmlElementList represents a collection of {@link TXmlElement}. + * You may manipulate the collection with the operations defined in {@link TList}. + * + * @author Qiang Xue + * @package System.Xml + * @since 3.0 + */ +class TXmlElementList extends TList +{ + /** + * @var TXmlElement owner of this list + */ + private $_o; + + /** + * Constructor. + * @param TXmlElement owner of this list + */ + public function __construct(TXmlElement $owner) + { + $this->_o=$owner; + } + + /** + * @return TXmlElement owner of this list + */ + protected function getOwner() + { + return $this->_o; + } + + /** + * Inserts an item at the specified position. + * This overrides the parent implementation by performing additional + * operations for each newly added TXmlElement object. + * @param integer the specified position. + * @param mixed new item + * @throws TInvalidDataTypeException if the item to be inserted is not a TXmlElement object. + */ + public function insertAt($index,$item) + { + if($item instanceof TXmlElement) + { + parent::insertAt($index,$item); + if($item->getParent()!==null) + $item->getParent()->getElements()->remove($item); + $item->setParent($this->_o); + } + else + throw new TInvalidDataTypeException('xmlelementlist_xmlelement_required'); + } + + /** + * Removes an item at the specified position. + * This overrides the parent implementation by performing additional + * cleanup work when removing a TXmlElement object. + * @param integer the index of the item to be removed. + * @return mixed the removed item. + */ + public function removeAt($index) + { + $item=parent::removeAt($index); + if($item instanceof TXmlElement) + $item->setParent(null); + return $item; + } +} \ No newline at end of file -- cgit v1.2.3