mirror of
				https://github.com/slawkens/myaac.git
				synced 2025-10-29 23:16:23 +01:00 
			
		
		
		
	 9d664d3577
			
		
	
	9d664d3577
	
	
	
		
			
			* Part 1 Removing closing tags when no HTML or other output comes after the last PHP codeblock. * Further removals * nothing --------- Co-authored-by: slawkens <slawkens@gmail.com>
		
			
				
	
	
		
			152 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
			
		
		
	
	
			152 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			PHP
		
	
	
	
	
	
| <?php
 | |
| 
 | |
| /**#@+
 | |
|  * @version 0.0.3
 | |
|  * @since 0.0.3
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * @package POT
 | |
|  * @version 0.1.3
 | |
|  * @author Wrzasq <wrzasq@gmail.com>
 | |
|  * @copyright 2007 (C) by Wrzasq
 | |
|  * @license http://www.gnu.org/licenses/lgpl-3.0.txt GNU Lesser General Public License, Version 3
 | |
|  */
 | |
| 
 | |
| /**
 | |
|  * Container item representation.
 | |
|  *
 | |
|  * <p>
 | |
|  * This class represents items that can contain other items. It's {@link OTS_Container::count() count() method} has been overwritten so it now doesn't return count of current item (if it would even be possible for containers) but amount of items within (not recursively).
 | |
|  * </p>
 | |
|  *
 | |
|  * @package POT
 | |
|  * @version 0.1.3
 | |
|  */
 | |
| class OTS_Container extends OTS_Item implements IteratorAggregate
 | |
| {
 | |
| /**
 | |
|  * Contained items.
 | |
|  *
 | |
|  * @var array
 | |
|  */
 | |
|     private $items = array();
 | |
| 
 | |
| /**
 | |
|  * Adds item to container.
 | |
|  *
 | |
|  * @param OTS_Item $item Item.
 | |
|  */
 | |
|     public function addItem(OTS_Item $item)
 | |
|     {
 | |
|         $this->items[] = $item;
 | |
|     }
 | |
| 
 | |
| /**
 | |
|  * Removes given item from current container.
 | |
|  *
 | |
|  * <p>
 | |
|  * Passed item must be exacly instance of item which is stored in container, not it's copy. This method bases on PHP references.
 | |
|  * </p>
 | |
|  *
 | |
|  * @param OTS_Item $item Item.
 | |
|  * @tutorial POT/Players.pkg#deleting
 | |
|  */
 | |
|     public function removeItem(OTS_Item $item)
 | |
|     {
 | |
|         foreach($this->items as $index => $current)
 | |
|         {
 | |
|             // checks if it is EXACLY the same item, not similar
 | |
|             if($item === $current)
 | |
|             {
 | |
|                 unset($this->items[$index]);
 | |
|             }
 | |
|         }
 | |
|     }
 | |
| 
 | |
| /**
 | |
|  * Number of items inside container.
 | |
|  *
 | |
|  * <p>
 | |
|  * OTS_Container implementation of Countable interface differs from {@link OTS_Item OTS_Item} implemention. {@link OTS_Item::count() OTS_Item::count()} returns count of given item, OTS_Container::count() returns number of items inside container. If somehow it would be possible to make container items with more then 1 in one place, you can use {@link OTS_Item::getCount() OTS_Item::getCount()} and {@link OTS_Item::setCount() OTS_Item::setCount()} in code where you are not sure if working with regular item, or container.
 | |
|  * </p>
 | |
|  *
 | |
|  * @return int Number of items.
 | |
|  */
 | |
|     public function count(): int
 | |
|     {
 | |
|         return count($items);
 | |
|     }
 | |
| 
 | |
| /**
 | |
|  * @return OTS_Item Current item.
 | |
|  * @deprecated 0.1.0 Use getIterator().
 | |
|  */
 | |
|     public function current()
 | |
|     {
 | |
|         return current($this->items);
 | |
|     }
 | |
| 
 | |
| /**
 | |
|  * @deprecated 0.1.0 Use getIterator().
 | |
|  */
 | |
|     public function next()
 | |
|     {
 | |
|         next($this->items);
 | |
|     }
 | |
| 
 | |
| /**
 | |
|  * @return mixed Iterator position.
 | |
|  * @deprecated 0.1.0 Use getIterator().
 | |
|  */
 | |
|     public function key()
 | |
|     {
 | |
|         return key($this->items);
 | |
|     }
 | |
| 
 | |
| /**
 | |
|  * @return bool Does next item exist.
 | |
|  * @deprecated 0.1.0 Use getIterator().
 | |
|  */
 | |
|     public function valid()
 | |
|     {
 | |
|         return key($this->items) !== null;
 | |
|     }
 | |
| 
 | |
| /**
 | |
|  * @deprecated 0.1.0 Use getIterator().
 | |
|  */
 | |
|     public function rewind()
 | |
|     {
 | |
|         reset($this->items);
 | |
|     }
 | |
| 
 | |
| /**
 | |
|  * Returns iterator handle for loops.
 | |
|  *
 | |
|  * @version 0.1.0
 | |
|  * @since 0.1.0
 | |
|  * @return ArrayIterator Items iterator.
 | |
|  */
 | |
|     public function getIterator()
 | |
|     {
 | |
|         return new ArrayIterator($this->items);
 | |
|     }
 | |
| 
 | |
| /**
 | |
|  * Clones all contained items.
 | |
|  *
 | |
|  * @version 0.1.3
 | |
|  * @since 0.1.3
 | |
|  */
 | |
|     public function __clone()
 | |
|     {
 | |
|         foreach($this->items as $index => $item)
 | |
|         {
 | |
|             $this->items[$index] = clone $item;
 | |
|         }
 | |
|     }
 | |
| }
 | |
| 
 | |
| /**#@-*/
 |