12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160 |
- <?php
- /** @file spl.php
- * @ingroup SPL
- * @brief Documentation of internal classes and interfaces
- *
- * SPL - Standard PHP Library
- *
- * (c) Marcus Boerger, 2003 - 2008
- */
- /** @mainpage SPL - Standard PHP Library
- *
- * SPL - Standard PHP Library
- *
- * SPL is a collection of interfaces and classes that are meant to solve
- * standard problems and implements some efficient data access interfaces
- * and classes. You'll find the classes documented using php code in the
- * file spl.php or in corresponding .inc files in subdirectories examples
- * and internal. Based on the internal implementations or the files in the
- * examples subdirectory there are also some .php files to experiment with.
- *
- * The .inc files are not included automatically because they are sooner or
- * later integrated into the extension. That means that you either need to
- * put the code of examples/autoload.inc into your autoprepend file or that
- * you have to point your ini setting auto_prepend_file to that file.
- *
- * Below is a list of interfaces/classes already availabel natively through
- * the SPL extension grouped by category.
- *
- * 1) Iterators
- *
- * SPL offers some advanced iterator algorithms:
- *
- * - interface RecursiveIterator extends Iterator
- * - interface OuterIterator extends Iterator
- * - class RecursiveIteratorIterator implements OuterIterator
- * - class RecursiveTreeIterator extends RecursiveIteratorIterator
- * - abstract class FilterIterator implements OuterIterator
- * - class ParentIterator extends FilterIterator implements RecursiveIterator
- * - interface SeekableIterator extends Iterator
- * - class LimitIterator implements OuterIterator
- * - class CachingIterator implements OuterIterator
- * - class RecursiveCachingIterator extends CachingIterator implements RecursiveIterator
- * - class IteratorIterator implements OuterIterator
- * - class NoRewindIterator implements OuterIterator
- * - class EmptyIterator implements Iterator
- * - class InfiniteIterator extends IteratorIterator
- * - class AppendIterator implements OuterIterator
- * - class RegexIterator extends FilterIterator
- * - class RecursiveRegexIterator extends RegexIterator implements RecursiveIterator
- * - class MultipleIterator extends Iterator
- *
- * 2) Directories and Files
- *
- * SPL offers two advanced directory and file handling classes:
- *
- * - class SplFileInfo
- * - class DirectoryIterator extends SplFileInfo implements Iterator
- * - class FilesystemIterator extends DirectoryIterator
- * - class RecursiveDirectoryIterator extends FilesystemIterator implements RecursiveIterator
- * - class GlobIterator extends FilesystemIterator implements Countable
- * - class SplFileObject extends SplFileInfo implements RecursiveIterator, SeekableIterator
- * - class SplTempFileObject extends SplFileObject
- *
- * 3) XML
- *
- * SPL offers an advanced XML handling class:
- *
- * - class SimpleXMLIterator extends simplexml_element implements RecursiveIterator
- *
- * 4) Array Overloading
- *
- * SPL offers advanced Array overloading:
- *
- * - class ArrayObject implements IteratorAggregate, ArrayAccess, Countable
- * - class ArrayIterator implements Iterator, ArrayAccess, Countable, SeekableIterator
- * - class RecursiveArrayIterator extends ArrayIterator implements RecursiveIterator
- * - class SplFixedArray implements Iterator, ArrayAccess, Countable
- *
- * As the above suggest an ArrayObject creates an ArrayIterator when it comes to
- * iteration (e.g. ArrayObject instance used inside foreach).
- *
- * 5) Counting
- *
- * - interface Countable allows to hook into the standard array function count().
- *
- * 6) Exception%s
- *
- * SPL provides a set of standard Exception classes each meant to indicate a
- * certain problem type.
- *
- * - class LogicException extends Exception
- * - class BadFunctionCallException extends LogicException
- * - class BadMethodCallException extends BadFunctionCallException
- * - class DomainException extends LogicException
- * - class InvalidArgumentException extends LogicException
- * - class LengthException extends LogicException
- * - class OutOfRangeException extends LogicException
- * - class RuntimeException extends Exception
- * - class OutOfBoundsException extends RuntimeException
- * - class OverflowException extends RuntimeException
- * - class RangeException extends RuntimeException
- * - class UnderflowException extends RuntimeException
- *
- * 7) Observer
- *
- * SPL suggests a standard way of implementing the observer pattern.
- *
- * - interface SplObserver
- * - interface SplSubject
- * - class SplObjectStorage
- *
- * 8) Datastructures
- *
- * SPL proposes a set of datastructures implemented internally.
- *
- * - class SplDoublyLinkedList
- * - class SplStack extends SplDoublyLinkedList
- * - class SplQueue extends SplDoublyLinkedList
- *
- * 9) @ref Examples
- *
- * The classes and interfaces in this group are contained as PHP code in the
- * examples subdirectory of ext/SPL. Sooner or later they will be moved to
- * c-code.
- *
- * 10) Some articles about SPL:
- * - <a href="http://www.phpro.org/tutorials/Introduction-to-SPL.html">Introduction to Standard PHP Library (SPL)</a>
- * - <a href="http://www.sitepoint.com/article/php5-standard-library/1">Introducing PHP 5's Standard Library</a>
- * - <a href="http://www.ramikayyali.com/archives/2005/02/25/iterators">Iterators in PHP5</a>
- * - <a href="http://www.phpriot.com/d/articles/php/oop/oop-with-spl-php-5-1/index.html">Advanced OOP with SPL in PHP 5</a>
- * - <a href="http://www.devshed.com/c/a/PHP/The-Standard-PHP-Library-Part-1/">The Standard PHP Library, Part 1</a>
- * - <a href="http://www.devshed.com/c/a/PHP/The-Standard-PHP-Library-Part-2/">The Standard PHP Library, Part 2</a>
- * - <a href="http://www.professionelle-softwareentwicklung-mit-php5.de/erste_auflage/oop.iterators.spl.html">Die Standard PHP Library (SPL) [german]</a>
- *
- * 11) Talks on SPL:
- * - SPL Update <a href="http://talks.somabo.de/200702_vancouver_spl_update.pps">[pps]</a>, <a href="http://talks.somabo.de/200702_vancouver_spl_update.pdf">[pdf]</a>
- * - Happy SPLing <a href="http://talks.somabo.de/200509_toronto_happy_spling.pps">[pps]</a>, <a href="http://talks.somabo.de/200509_toronto_happy_spling.pdf">[pdf]</a>
- * - From engine overloading to SPL <a href="http://talks.somabo.de/200505_cancun_from_engine_overloading_to_spl.pps">[pps]</a>, <a href="http://talks.somabo.de/200505_cancun_from_engine_overloading_to_spl.pdf">[pdf]</a>
- * - SPL for the masses <a href="http://talks.somabo.de/200504_php_quebec_spl_for_the_masses.pps">[pps]</a>, <a href="http://talks.somabo.de/200504_php_quebec_spl_for_the_masses.pdf">[pdf]</a>
- *
- * 12) Debug sessions:
- * - Debug session 1 <a href="200407_oscon_introduction_to_iterators_debug.pps">[pps]</a>, <a href="200407_oscon_introduction_to_iterators_debug.pdf">[pdf]</a>
- * - Debug session 2 <a href="http://talks.somabo.de/200509_toronto_iterator_debug_session_1.pps">[pps]</a>, <a href="http://talks.somabo.de/200509_toronto_iterator_debug_session_1.pdf">[pdf]</a>, <a href="http://taks.somabo.de/200411_php_conference_frankfrurt_iterator_debug_session.swf">[swf]</a>
- * - Debug session 3 <a href="http://talks.somabo.de/200509_toronto_iterator_debug_session_2.pps">[pps]</a>, <a href="http://talks.somabo.de/200509_toronto_iterator_debug_session_2.pdf">[pdf]</a>
- *
- * (c) Marcus Boerger, 2003 - 2007
- */
- /** @defgroup ZendEngine Zend engine classes
- *
- * The classes and interfaces in this group are contained in the c-code of
- * PHP's Zend engine.
- */
- /** @defgroup SPL Internal classes
- *
- * The classes and interfaces in this group are contained in the c-code of
- * ext/SPL.
- */
- /** @defgroup Examples Example classes
- *
- * The classes and interfaces in this group are contained as PHP code in the
- * examples subdirectory of ext/SPL. Sooner or later they will be moved to
- * c-code.
- */
- /** @ingroup SPL
- * @brief Default implementation for __autoload()
- * @since PHP 5.1
- *
- * @param class_name name of class to load
- * @param file_extensions file extensions (use defaults if NULL)
- */
- function spl_autoload(string $class_name, string $file_extensions = NULL) {/**/};
- /** @ingroup SPL
- * @brief Manual invocation of all registerd autoload functions
- * @since PHP 5.1
- *
- * @param class_name name of class to load
- */
- function spl_autoload_call(string $class_name) {/**/};
- /** @ingroup SPL
- * @brief Register and return default file extensions for spl_autoload
- * @since PHP 5.1
- *
- * @param file_extensions optional comma separated list of extensions to use in
- * default autoload function. If not given just return the current list.
- * @return comma separated list of file extensions to use in default autoload
- * function.
- */
- function spl_autoload_extensions($file_extensions) {/**/};
- /** @ingroup SPL
- * @brief Return all registered autoload functionns
- * @since PHP 5.1
- *
- * @return array of all registered autoload functions or false
- */
- function spl_autoload_functions() {/**/};
- /** @ingroup SPL
- * @brief Register given function as autoload implementation
- * @since PHP 5.1
- *
- * @param autoload_function name of function or array of object/class and
- * function name to register as autoload function.
- * @param throw whether to throw or issue an error on failure.
- */
- function spl_autoload_register(string $autoload_function = "spl_autoload", $throw = true) {/**/};
- /** @ingroup SPL
- * @brief Unregister given function as autoload implementation
- * @since PHP 5.1
- *
- * @param autoload_function name of function or array of object/class and
- * function name to unregister as autoload function.
- */
- function spl_autoload_unregister(string $autoload_function = "spl_autoload") {/**/};
- /** @ingroup SPL
- * @brief Return an array of classes and interfaces in SPL
- *
- * @return array containing the names of all clsses and interfaces defined in
- * extension SPL
- */
- function spl_classes() {/**/};
- /** @ingroup SPL
- * @brief Count the elements in an iterator
- * @since PHP 5.1
- *
- * @return number of elements in an iterator
- */
- function iterator_count(Traversable $it) {/**/};
- /** @ingroup SPL
- * @brief Copy iterator elements into an array
- * @since PHP 5.1
- *
- * @param it iterator to copy
- * @param use_keys whether touse the keys
- * @return array with elements copied from the iterator
- */
- function iterator_to_array(Traversable $it, $use_keys = true) {/**/};
- /** @ingroup ZendEngine
- * @brief Basic Exception class.
- * @since PHP 5.0
- */
- class Exception
- {
- /** The exception message */
- protected $message;
- /** The string representations as generated during construction */
- private $string;
- /** The code passed to the constructor */
- protected $code;
- /** The file name where the exception was instantiated */
- protected $file;
- /** The line number where the exception was instantiated */
- protected $line;
- /** The stack trace */
- private $trace;
- /** Prevent clone
- */
- final private function __clone() {}
- /** Construct an exception
- *
- * @param $message Some text describing the exception
- * @param $code Some code describing the exception
- */
- function __construct($message = NULL, $code = 0) {
- if (func_num_args()) {
- $this->message = $message;
- }
- $this->code = $code;
- $this->file = __FILE__; // of throw clause
- $this->line = __LINE__; // of throw clause
- $this->trace = debug_backtrace();
- $this->string = StringFormat($this);
- }
- /** @return the message passed to the constructor
- */
- final public function getMessage()
- {
- return $this->message;
- }
- /** @return the code passed to the constructor
- */
- final public function getCode()
- {
- return $this->code;
- }
- /** @return the name of the file where the exception was thrown
- */
- final public function getFile()
- {
- return $this->file;
- }
- /** @return the line number where the exception was thrown
- */
- final public function getLine()
- {
- return $this->line;
- }
- /** @return the stack trace as array
- */
- final public function getTrace()
- {
- return $this->trace;
- }
- /** @return the stack trace as string
- */
- final public function getTraceAsString()
- {
- }
- /** @return string representation of exception
- */
- public function __toString()
- {
- return $this->string;
- }
- }
- /** @ingroup SPL
- * @brief Exception that represents error in the program logic.
- * @since PHP 5.1
- *
- * This kind of exceptions should directly leed to a fix in your code.
- */
- class LogicException extends Exception
- {
- }
- /** @ingroup SPL
- * @brief Exception thrown when a function call was illegal.
- * @since PHP 5.1
- */
- class BadFunctionCallException extends LogicException
- {
- }
- /** @ingroup SPL
- * @brief Exception thrown when a method call was illegal.
- * @since PHP 5.1
- */
- class BadMethodCallException extends BadFunctionCallException
- {
- }
- /** @ingroup SPL
- * @brief Exception that denotes a value not in the valid domain was used.
- * @since PHP 5.1
- *
- * This kind of exception should be used to inform about domain erors in
- * mathematical sense.
- *
- * @see RangeException
- */
- class DomainException extends LogicException
- {
- }
- /** @ingroup SPL
- * @brief Exception that denotes invalid arguments were passed.
- * @since PHP 5.1
- *
- * @see UnexpectedValueException
- */
- class InvalidArgumentException extends LogicException
- {
- }
- /** @ingroup SPL
- * @brief Exception thrown when a parameter exceeds the allowed length.
- * @since PHP 5.1
- *
- * This can be used for strings length, array size, file size, number of
- * elements read from an Iterator and so on.
- */
- class LengthException extends LogicException
- {
- }
- /** @ingroup SPL
- * @brief Exception thrown when an illegal index was requested.
- * @since PHP 5.1
- *
- * This represents errors that should be detected at compile time.
- *
- * @see OutOfBoundsException
- */
- class OutOfRangeException extends LogicException
- {
- }
- /** @ingroup SPL
- * @brief Exception thrown for errors that are only detectable at runtime.
- * @since PHP 5.1
- */
- class RuntimeException extends Exception
- {
- }
- /** @ingroup SPL
- * @brief Exception thrown when an illegal index was requested.
- * @since PHP 5.1
- *
- * This represents errors that cannot be detected at compile time.
- *
- * @see OutOfRangeException
- */
- class OutOfBoundsException extends RuntimeException
- {
- }
- /** @ingroup SPL
- * @brief Exception thrown to indicate arithmetic/buffer overflow.
- * @since PHP 5.1
- */
- class OverflowException extends RuntimeException
- {
- }
- /** @ingroup SPL
- * @brief Exception thrown to indicate range errors during program execution.
- * @since PHP 5.1
- *
- * Normally this means there was an arithmetic error other than under/overflow.
- * This is the runtime version of DomainException.
- *
- * @see DomainException
- */
- class RangeException extends RuntimeException
- {
- }
- /** @ingroup SPL
- * @brief Exception thrown to indicate arithmetic/buffer underflow.
- * @since PHP 5.1
- */
- class UnderflowException extends RuntimeException
- {
- }
- /** @ingroup SPL
- * @brief Exception thrown to indicate an unexpected value.
- * @since PHP 5.1
- *
- * Typically this happens when a function calls another function and espects
- * the return value to be of a certain type or value not including arithmetic
- * or buffer related errors.
- *
- * @see InvalidArgumentException
- */
- class UnexpectedValueException extends RuntimeException
- {
- }
- /** @ingroup ZendEngine
- * @brief Interface to override array access of objects.
- * @since PHP 5.0
- */
- interface ArrayAccess
- {
- /** @param $offset to modify
- * @param $value new value
- */
- function offsetSet($offset, $value);
- /** @param $offset to retrieve
- * @return value at given offset
- */
- function offsetGet($offset);
- /** @param $offset to delete
- */
- function offsetUnset($offset);
- /** @param $offset to check
- * @return whether the offset exists.
- */
- function offsetExists($offset);
- }
- /** @ingroup ZendEngine
- * @brief Interface to detect a class is traversable using foreach.
- * @since PHP 5.0
- *
- * Abstract base interface that cannot be implemented alone. Instead it
- * must be implemented by either IteratorAggregate or Iterator.
- *
- * @note Internal classes that implement this interface can be used in a
- * foreach construct and do not need to implement IteratorAggregate or
- * Iterator.
- *
- * @note This is an engine internal interface which cannot be implemented
- * in PHP scripts. Either IteratorAggregate or Iterator must be used
- * instead.
- */
- interface Traversable
- {
- }
- /** @ingroup ZendEngine
- * @brief Interface to create an external Iterator.
- * @since PHP 5.0
- *
- * @note This is an engine internal interface.
- */
- interface IteratorAggregate extends Traversable
- {
- /** @return an Iterator for the implementing object.
- */
- function getIterator();
- }
- /** @ingroup ZendEngine
- * @brief Basic iterator
- * @since PHP 5.0
- *
- * Interface for external iterators or objects that can be iterated
- * themselves internally.
- *
- * @note This is an engine internal interface.
- */
- interface Iterator extends Traversable
- {
- /** Rewind the Iterator to the first element.
- */
- function rewind();
- /** Return the current element.
- */
- function current();
- /** Return the key of the current element.
- */
- function key();
- /** Move forward to next element.
- */
- function next();
- /** Check if there is a current element after calls to rewind() or next().
- */
- function valid();
- }
- /** @ingroup SPL
- * @brief This Interface allows to hook into the global count() function.
- * @since PHP 5.1
- */
- interface Countable
- {
- /** @return the number the global function count() should show
- */
- function count();
- }
- /** @ingroup ZendEngine
- * @brief Interface for customized serializing
- * @since 5.1
- *
- * Classes that implement this interface no longer support __sleep() and
- * __wakeup(). The method serialized is called whenever an instance needs to
- * be serialized. This does not invoke __destruct() or has any other side
- * effect unless programmed inside the method. When the data is unserialized
- * the class is known and the appropriate unserialize() method is called as a
- * constructor instead of calling __construct(). If you need to execute the
- * standard constructor you may do so in the method.
- */
- interface Serializable
- {
- /**
- * @return string representation of the instance
- */
- function serialize();
- /**
- * @note This is a constructor
- *
- * @param $serialized data read from stream to construct the instance
- */
- function unserialize($serialized);
- }
- /** @ingroup SPL
- * @brief An Array wrapper
- * @since PHP 5.0
- * @version 1.2
- *
- * This array wrapper allows to recursively iterate over Arrays and public
- * Object properties.
- *
- * @see ArrayIterator
- */
- class ArrayObject implements IteratorAggregate, ArrayAccess, Countable
- {
- /** Properties of the object have their normal functionality
- * when accessed as list (var_dump, foreach, etc.) */
- const STD_PROP_LIST = 0x00000001;
- /** Array indices can be accessed as properties in read/write */
- const ARRAY_AS_PROPS = 0x00000002;
- /** Construct a new array iterator from anything that has a hash table.
- * That is any Array or Object.
- *
- * @param $array the array to use.
- * @param $flags see setFlags().
- * @param $iterator_class class used in getIterator()
- */
- function __construct($array, $flags = 0, $iterator_class = "ArrayIterator") {/**/}
- /** Set behavior flags.
- *
- * @param $flags bitmask as follows:
- * 0 set: properties of the object have their normal functionality
- * when accessed as list (var_dump, foreach, etc.)
- * 1 set: array indices can be accessed as properties in read/write
- */
- function setFlags($flags) {/**/}
- /** @return current flags
- */
- function getFlags() {/**/}
- /** Sort the entries by values.
- */
- function asort() {/**/}
- /** Sort the entries by key.
- */
- function ksort() {/**/}
- /** Sort the entries by values using user defined function.
- */
- function uasort(mixed cmp_function) {/**/}
- /** Sort the entries by key using user defined function.
- */
- function uksort(mixed cmp_function) {/**/}
- /** Sort the entries by values using "natural order" algorithm.
- */
- function natsort() {/**/}
- /** Sort the entries by values using case insensitive "natural order" algorithm.
- */
- function natcasesort() {/**/}
- /** @param $array new array or object
- */
- function exchangeArray($array) {/**/}
- /** @return the iterator which is an ArrayIterator object connected to
- * this object.
- */
- function getIterator() {/**/}
- /** @param $index offset to inspect
- * @return whetehr offset $index esists
- */
- function offsetExists($index) {/**/}
- /** @param $index offset to return value for
- * @return value at offset $index
- */
- function offsetGet($index) {/**/}
- /** @param $index index to set
- * @param $newval new value to store at offset $index
- */
- function offsetSet($index, $newval) {/**/}
- /** @param $index offset to unset
- */
- function offsetUnset($index) {/**/}
- /** @param $value is appended as last element
- * @warning this method cannot be called when the ArrayObject refers to
- * an object.
- */
- function append($value) {/**/}
- /** @return a \b copy of the array
- * @note when the ArrayObject refers to an object then this method
- * returns an array of the public properties.
- */
- function getArrayCopy() {/**/}
- /** @return the number of elements in the array or the number of public
- * properties in the object.
- */
- function count() {/**/}
- /* @param $iterator_class new class used in getIterator()
- */
- function setIteratorClass($itertor_class) {/**/}
- /* @return class used in getIterator()
- */
- function getIteratorClass() {/**/}
- }
- /** @ingroup SPL
- * @brief An Array iterator
- * @since PHP 5.0
- * @version 1.2
- *
- * This iterator allows to unset and modify values and keys while iterating
- * over Arrays and Objects.
- *
- * When you want to iterate over the same array multiple times you need to
- * instanciate ArrayObject and let it create ArrayIterator instances that
- * refer to it either by using foreach or by calling its getIterator()
- * method manually.
- */
- class ArrayIterator implements SeekableIterator, ArrayAccess, Countable
- {
- /** Properties of the object have their normal functionality
- * when accessed as list (var_dump, foreach, etc.) */
- const STD_PROP_LIST = 0x00000001;
- /** Array indices can be accessed as properties in read/write */
- const ARRAY_AS_PROPS = 0x00000002;
- /** Construct a new array iterator from anything that has a hash table.
- * That is any Array or Object.
- *
- * @param $array the array to use.
- * @param $flags see setFlags().
- */
- function __construct($array, $flags = 0) {/**/}
- /** Set behavior flags.
- *
- * @param $flags bitmask as follows:
- * 0 set: properties of the object have their normal functionality
- * when accessed as list (var_dump, foreach, etc.)
- * 1 set: array indices can be accessed as properties in read/write
- */
- function setFlags($flags) {/**/}
- /**
- * @return current flags
- */
- function getFlags() {/**/}
- /** Sort the entries by values.
- */
- function asort() {/**/}
- /** Sort the entries by key.
- */
- function ksort() {/**/}
- /** Sort the entries by values using user defined function.
- */
- function uasort(mixed cmp_function) {/**/}
- /** Sort the entries by key using user defined function.
- */
- function uksort(mixed cmp_function) {/**/}
- /** Sort the entries by values using "natural order" algorithm.
- */
- function natsort() {/**/}
- /** Sort the entries by values using case insensitive "natural order" algorithm.
- */
- function natcasesort() {/**/}
- /** @param $index offset to inspect
- * @return whetehr offset $index esists
- */
- function offsetExists($index) {/**/}
- /** @param $index offset to return value for
- * @return value at offset $index
- */
- function offsetGet($index) {/**/}
- /** @param $index index to set
- * @param $newval new value to store at offset $index
- */
- function offsetSet($index, $newval) {/**/}
- /** @param $index offset to unset
- */
- function offsetUnset($index) {/**/}
- /** @param $value is appended as last element
- * @warning this method cannot be called when the ArrayIterator refers to
- * an object.
- */
- function append($value) {/**/}
- /** @return a \b copy of the array
- * @note when the ArrayIterator refers to an object then this method
- * returns an array of the public properties.
- */
- function getArrayCopy() {/**/}
- /** @param $position offset to seek to
- * @throw OutOfBoundsException if $position is invalid
- */
- function seek($position) {/**/}
- /** @return the number of elements in the array or the number of public
- * properties in the object.
- */
- function count() {/**/}
- /** @copydoc Iterator::rewind */
- function rewind() {/**/}
- /** @copydoc Iterator::valid */
- function valid() {/**/}
- /** @copydoc Iterator::current */
- function current() {/**/}
- /** @copydoc Iterator::key */
- function key() {/**/}
- /** @copydoc Iterator::next */
- function next() {/**/}
- }
- /** @ingroup SPL
- * @brief File info class
- * @since PHP 5.1.3
- */
- class SplFileInfo
- {
- /** Construct a file info object
- *
- * @param $file_name path or file name
- */
- function __construct($file_name) {/**/}
- /** @return the path part only.
- */
- function getPath() {/**/}
- /** @return the filename only.
- */
- function getFilename() {/**/}
- /** @return SplFileInfo created for the file
- * @param class_name name of class to instantiate
- * @see SplFileInfo::setInfoClass()
- */
- function getFileInfo(string class_name = NULL) {/**/}
- /** @return The current entries path and file name.
- */
- function getPathname() {/**/}
- /** @return SplFileInfo created for the path
- * @param class_name name of class to instantiate
- * @see SplFileInfo::setInfoClass()
- */
- function getPathInfo(string class_name = NULL) {/**/}
- /** @return The current entry's permissions.
- */
- function getPerms() {/**/}
- /** @return The current entry's inode.
- */
- function getInode() {/**/}
- /** @return The current entry's size in bytes .
- */
- function getSize() {/**/}
- /** @return The current entry's owner name.
- */
- function getOwner() {/**/}
- /** @return The current entry's group name.
- */
- function getGroup() {/**/}
- /** @return The current entry's last access time.
- */
- function getATime() {/**/}
- /** @return The current entry's last modification time.
- */
- function getMTime() {/**/}
- /** @return The current entry's last change time.
- */
- function getCTime() {/**/}
- /** @return The current entry's file type.
- */
- function getType() {/**/}
- /** @return Whether the current entry is writeable.
- */
- function isWritable() {/**/}
- /** @return Whether the current entry is readable.
- */
- function isReadable() {/**/}
- /** @return Whether the current entry is executable.
- */
- function isExecutable() {/**/}
- /** @return Whether the current entry is .
- */
- function isFile() {/**/}
- /** @return Whether the current entry is a directory.
- */
- function isDir() {/**/}
- /** @return whether the current entry is a link.
- */
- function isLink() {/**/}
- /** @return target of link.
- */
- function getLinkTarget() {/**/}
- /** @return The resolved path
- */
- function getRealPath() {/**/}
- /** @return getPathname()
- */
- function __toString() {/**/}
- /** Open the current file as a SplFileObject instance
- *
- * @param mode open mode
- * @param use_include_path whether to search include paths (don't use)
- * @param context resource context to passed to open function
- * @throw RuntimeException if file cannot be opened (e.g. insufficient
- * access rights).
- * @return The opened file as a SplFileObject instance
- *
- * @see SplFileObject
- * @see SplFileInfo::setFileClass()
- * @see file()
- */
- function openFile($mode = 'r', $use_include_path = false, $context = NULL) {/**/}
- /** @param class_name name of class used with openFile(). Must be derived
- * from SPLFileObject.
- */
- function setFileClass(string class_name = "SplFileObject") {/**/}
- /** @param class_name name of class used with getFileInfo(), getPathInfo().
- * Must be derived from SplFileInfo.
- */
- function setInfoClass(string class_name = "SplFileInfo") {/**/}
- }
- /** @ingroup SPL
- * @brief Directory iterator
- * @version 1.1
- * @since PHP 5.0
- */
- class DirectoryIterator extends SplFileInfo implements Iterator
- {
- /** Construct a directory iterator from a path-string.
- *
- * @param $path directory to iterate.
- */
- function __construct($path) {/**/}
- /** @copydoc Iterator::rewind */
- function rewind() {/**/}
- /** @copydoc Iterator::valid */
- function valid() {/**/}
- /** @return index of entry
- */
- function key() {/**/}
- /** @return $this
- */
- function current() {/**/}
- /** @copydoc Iterator::next */
- function next() {/**/}
- /** @return Whether the current entry is either '.' or '..'.
- */
- function isDot() {/**/}
- /** @return whether the current entry is a link.
- */
- function isLink() {/**/}
- /** @return getFilename()
- */
- function __toString() {/**/}
- }
- /** @ingroup SPL
- * @brief recursive directory iterator
- * @version 1.1
- * @since PHP 5.0
- */
- class RecursiveDirectoryIterator extends DirectoryIterator implements RecursiveIterator
- {
- const CURRENT_AS_FILEINFO 0x00000000; /* make RecursiveDirectoryTree::current() return SplFileInfo */
- const CURRENT_AS_SELF 0x00000010; /* make RecursiveDirectoryTree::current() return getSelf() */
- const CURRENT_AS_PATHNAME 0x00000020; /* make RecursiveDirectoryTree::current() return getPathname() */
- const KEY_AS_PATHNAME 0x00000000; /* make RecursiveDirectoryTree::key() return getPathname() */
- const KEY_AS_FILENAME 0x00000100; /* make RecursiveDirectoryTree::key() return getFilename() */
- const NEW_CURRENT_AND_KEY 0x00000100; /* CURRENT_AS_FILEINFO + KEY_AS_FILENAME */
- /** Construct a directory iterator from a path-string.
- *
- * @param $path directory to iterate.
- * @param $flags open flags
- * - CURRENT_AS_FILEINFO
- * - CURRENT_AS_SELF
- * - CURRENT_AS_PATHNAME
- * - KEY_AS_PATHNAME
- * - KEY_AS_FILENAME
- * - NEW_CURRENT_AND_KEY
- */
- function __construct($path, $flags = 0) {/**/}
- /** @return getPathname() or getFilename() depending on flags
- */
- function key() {/**/}
- /** @return getFilename() or getFileInfo() depending on flags
- */
- function current() {/**/}
- /** @return whether the current is a directory (not '.' or '..').
- */
- function hasChildren() {/**/}
- /** @return a RecursiveDirectoryIterator for the current entry.
- */
- function getChildren() {/**/}
- /** @return sub path only (without main path)
- */
- function getSubPath() {/**/}
- /** @return the current sub path
- */
- function getSubPathname() {/**/}
- }
- /** @ingroup SPL
- * @brief recursive SimpleXML_Element iterator
- * @since PHP 5.0
- *
- * The SimpleXMLIterator implements the RecursiveIterator interface. This
- * allows iteration over all elements using foreach or an appropriate while
- * construct, just like SimpleXMLElement does. When using the foreach construct,
- * you will also iterate over the subelements. For every element which
- * has subelements, hasChildren() returns true. This will trigger a call to
- * getChildren() which returns the iterator for that sub element.
- */
- class SimpleXMLIterator extends SimpleXMLElement implements RecursiveIterator, Countable
- {
- /** @return whether the current node has sub nodes.
- */
- function hasChildren() {/**/}
- /** @return a SimpleXMLIterator for the current node.
- */
- function getChildren() {/**/}
- /** @return number of elements/attributes seen with foreach()
- */
- function count() {/**/}
- /** @copydoc Iterator::rewind */
- function rewind() {/**/}
- /** @copydoc Iterator::valid */
- function valid() {/**/}
- /** @copydoc Iterator::current */
- function current() {/**/}
- /** @copydoc Iterator::key */
- function key() {/**/}
- /** @copydoc Iterator::next */
- function next() {/**/}
- }
- /** @ingroup SPL
- * @brief Observer of the observer pattern
- * @since PHP 5.1
- *
- * For a detailed explanation see Observer pattern in
- * <em>
- * Gamma, Helm, Johnson, Vlissides<br />
- * Design Patterns
- * </em>
- */
- interface SplObserver
- {
- /** Called from the subject (i.e. when it's value has changed).
- * @param $subject the callee
- */
- function update(SplSubject $subject);
- }
- /** @ingroup SPL
- * @brief Subject to the observer pattern
- * @since PHP 5.1
- * @see Observer
- */
- interface SplSubject
- {
- /** @param $observer new observer to attach
- */
- function attach(SplObserver $observer);
- /** @param $observer existing observer to detach
- * @note a non attached observer shouldn't result in a warning or similar
- */
- function detach(SplObserver $observer);
- /** Notify all observers
- */
- function notify();
- }
- ?>
|