mirror of
https://github.com/php/php-src.git
synced 2025-08-18 15:08:55 +02:00
- Update docu
This commit is contained in:
parent
3ed0413de5
commit
03136fc95d
3 changed files with 56 additions and 68 deletions
|
@ -1,58 +0,0 @@
|
|||
<?php
|
||||
|
||||
/** @file recursivefilteriterator.inc
|
||||
* @ingroup Examples
|
||||
* @brief class RecursiveFilterIterator
|
||||
* @author Marcus Boerger
|
||||
* @date 2003 - 2005
|
||||
*
|
||||
* SPL - Standard PHP Library
|
||||
*/
|
||||
|
||||
/** @ingroup Examples
|
||||
* @brief A recursive Filter
|
||||
* @author Marcus Boerger
|
||||
* @version 1.0
|
||||
*
|
||||
* Passes the RecursiveIterator interface to the inner Iterator and provides
|
||||
* the same functionality as FilterIterator. This allows you to skip parents
|
||||
* and all their childs before loading them all. You need to care about
|
||||
* function getChildren() because it may not always suit your needs. The
|
||||
* builtin behavior uses reflection to return a new instance of the exact same
|
||||
* class it is called from. That is you extend RecursiveFilterIterator and
|
||||
* getChildren() will create instance of that class. The problem is that doing
|
||||
* this does not transport any state or control information of your accept()
|
||||
* implementation to the new instance. To overcome this problem you might
|
||||
* need to overwrite getChildren(), call this implementation and pass the
|
||||
* control vaules manually.
|
||||
*/
|
||||
abstract class RecursiveFilterIterator extends FilterIterator implements RecursiveIterator
|
||||
{
|
||||
/*! The constructor takes a RecursiveIterator
|
||||
*/
|
||||
function __construct(RecursiveIterator $it)
|
||||
{
|
||||
$this->ref = new ReflectionClass($this);
|
||||
parent::__construct($it);
|
||||
}
|
||||
|
||||
/*! return whether the inner iterator has children
|
||||
*/
|
||||
function hasChildren()
|
||||
{
|
||||
return $this->getInnerIterator()->hasChildren();
|
||||
}
|
||||
|
||||
/*! \return children as instance of derived RecursiveFilterIterator class
|
||||
*
|
||||
* \see RecursiveFilterIterator
|
||||
*/
|
||||
function getChildren()
|
||||
{
|
||||
return $this->ref->newInstance($this->getInnerIterator()->getChildren());
|
||||
}
|
||||
|
||||
private $ref;
|
||||
}
|
||||
|
||||
?>
|
|
@ -15,18 +15,25 @@
|
|||
* @version 1.0
|
||||
* @since PHP 6.0
|
||||
*
|
||||
* This extended FilterIterator allows a recursive iteration using
|
||||
* RecursiveIteratorIterator that only shows those elements which
|
||||
* are accepted. It is of course better to filter before doing the
|
||||
* recursion since it allows to prevent recursion into children that
|
||||
* get declined later anyway.
|
||||
* Passes the RecursiveIterator interface to the inner Iterator and provides
|
||||
* the same functionality as FilterIterator. This allows you to skip parents
|
||||
* and all their childs before loading them all. You need to care about
|
||||
* function getChildren() because it may not always suit your needs. The
|
||||
* builtin behavior uses reflection to return a new instance of the exact same
|
||||
* class it is called from. That is you extend RecursiveFilterIterator and
|
||||
* getChildren() will create instance of that class. The problem is that doing
|
||||
* this does not transport any state or control information of your accept()
|
||||
* implementation to the new instance. To overcome this problem you might
|
||||
* need to overwrite getChildren(), call this implementation and pass the
|
||||
* control vaules manually.
|
||||
*/
|
||||
class RecursiveFilterIterator extends FilterIterator implements RecursiveIterator
|
||||
abstract class RecursiveFilterIterator extends FilterIterator implements RecursiveIterator
|
||||
{
|
||||
/** @param $it the RecursiveIterator to filter
|
||||
*/
|
||||
function __construct(RecursiveIterator $it)
|
||||
{
|
||||
$this->ref = new ReflectionClass($this);
|
||||
parent::__construct($it);
|
||||
}
|
||||
|
||||
|
@ -34,15 +41,17 @@ class RecursiveFilterIterator extends FilterIterator implements RecursiveIterato
|
|||
*/
|
||||
function hasChildren()
|
||||
{
|
||||
return $this->it->hasChildren();
|
||||
return $this->getInnerIterator()->hasChildren();
|
||||
}
|
||||
|
||||
/** @return the ParentIterator for the current elements children
|
||||
*/
|
||||
function getChildren()
|
||||
{
|
||||
return new RecursiveFilterIterator($this->it->getChildren());
|
||||
return $this->ref->newInstance($this->getInnerIterator()->getChildren());
|
||||
}
|
||||
|
||||
private $ref;
|
||||
}
|
||||
|
||||
?>
|
|
@ -495,6 +495,7 @@ interface Serializeable
|
|||
/** @ingroup SPL
|
||||
* @brief An Array wrapper
|
||||
* @since PHP 5.0
|
||||
* @version 1.1
|
||||
*
|
||||
* This array wrapper allows to recursively iterate over Arrays and public
|
||||
* Object properties.
|
||||
|
@ -507,8 +508,28 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Countable
|
|||
* That is any Array or Object.
|
||||
*
|
||||
* @param $array the array to use.
|
||||
* @param $flags see setFlags().
|
||||
*/
|
||||
function __construct($array);
|
||||
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();
|
||||
|
||||
/**
|
||||
* @param $array new array or object
|
||||
*/
|
||||
function exchangeArray($array);
|
||||
|
||||
/** @return the iterator which is an ArrayIterator object connected to
|
||||
* this object.
|
||||
|
@ -555,6 +576,7 @@ class ArrayObject implements IteratorAggregate, ArrayAccess, Countable
|
|||
/** @ingroup SPL
|
||||
* @brief An Array iterator
|
||||
* @since PHP 5.0
|
||||
* @version 1.1
|
||||
*
|
||||
* This iterator allows to unset and modify values and keys while iterating
|
||||
* over Arrays and Objects.
|
||||
|
@ -570,8 +592,23 @@ class ArrayIterator implements SeekableIterator, ArrayAccess, Countable
|
|||
* That is any Array or Object.
|
||||
*
|
||||
* @param $array the array to use.
|
||||
* @param $flags see setFlags().
|
||||
*/
|
||||
public function __construct($array);
|
||||
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();
|
||||
|
||||
/** @param $index offset to inspect
|
||||
* @return whetehr offset $index esists
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue