1<?php 2 3/** @file splstack.inc 4 * @ingroup SPL 5 * @brief class SplStack 6 * @author Etienne Kneuss 7 * @date 2008 - 2009 8 * 9 * SPL - Standard PHP Library 10 */ 11 12/** @ingroup SPL 13 * @brief Implementation of a stack through a DoublyLinkedList. As SplStack 14 * extends SplDoublyLinkedList, shift() and unshift() are still available even 15 * though they don't make much sense for a stack. 16 * @since PHP 5.3 17 * 18 * The SplStack class provides the main functionalities of a 19 * stack implemented using a doubly linked list (DLL). 20 */ 21class SplStack extends SplDoublyLinkedList 22{ 23 protected $_it_mode = parent::IT_MODE_LIFO; 24 25 /** Changes the iteration mode. There are two orthogonal sets of modes that 26 * can be set: 27 * 28 * - The behavior of the iterator (either one or the other) 29 * - SplDoublyLnkedList::IT_MODE_DELETE (Elements are deleted by the iterator) 30 * - SplDoublyLnkedList::IT_MODE_KEEP (Elements are traversed by the iterator) 31 * 32 * The default mode is 0 : SplDoublyLnkedList::IT_MODE_LIFO | SplDoublyLnkedList::IT_MODE_KEEP 33 * 34 * @note The iteration's direction is not modifiable for stack instances 35 * @param $mode New mode of iteration 36 * @throw RuntimeException If the new mode affects the iteration's direction. 37 */ 38 public function setIteratorMode($mode) 39 { 40 if ($mode & parent::IT_MODE_LIFO !== parent::IT_MODE_LIFO) { 41 throw new RuntimeException("Iterators' LIFO/FIFO modes for SplStack/SplQueue objects are frozen"); 42 } 43 44 $this->_it_mode = $mode; 45 } 46} 47 48?> 49