SPL-StandardPHPLibrary
Public Member Functions | Public Attributes
SubClasses Class Reference
Inheritance diagram for SubClasses:
Inheritance graph
[legend]
Collaboration diagram for SubClasses:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 __construct ($base, $check_interfaces=false)
 append ($value)
 asort ()
 count ()
 current ()
 getArrayCopy ()
 getChildren ()
 getFlags ()
 hasChildren ()
 key ()
 ksort ()
 natcasesort ()
 natsort ()
 next ()
 offsetExists ($index)
 offsetGet ($index)
 offsetSet ($index, $newval)
 offsetUnset ($index)
 rewind ()
 seek ($position)
 setFlags ($flags)
 uasort (mixed cmp_function)
 uksort (mixed cmp_function)
 valid ()

Public Attributes

const ARRAY_AS_PROPS = 0x00000002
const STD_PROP_LIST = 0x00000001

Detailed Description

Collects sub classes for given class or interface.

Definition at line 32 of file class_tree.php.


Constructor & Destructor Documentation

SubClasses::__construct ( base,
check_interfaces = false 
)
Parameters:
basebase class to collect sub classes for
check_interfaceswhether we deal with interfaces

Reimplemented from ArrayIterator.

Definition at line 37 of file class_tree.php.

References ArrayIterator\offsetSet(), and ArrayIterator\uksort().

    {
        foreach(get_declared_classes() as $cname)
        {
            $parent = get_parent_class($cname);
            if (strcasecmp($parent, $base) == 0)
            {
                $this->offsetSet($cname, new SubClasses($cname));
            }
            if ($check_interfaces)
            {
                if ($parent)
                {
                    $parent_imp = class_implements($parent);
                }
                foreach(class_implements($cname) as $iname)
                {
                    if (strcasecmp($iname, $base) == 0)
                    {
                        if (!$parent || !in_array($iname, $parent_imp))
                        {
                            $this->offsetSet($cname, new SubClasses($cname));
                        }
                    }
                }
            }
        }
        if ($check_interfaces)
        {
            foreach(get_declared_interfaces() as $cname)
            {
                foreach(class_implements($cname) as $iname)
                {
                    if (strcasecmp($iname, $base) == 0)
                    {
                        $this->offsetSet($cname, new SubClasses($cname, true));
                    }
                }
            }
        }
        $this->uksort('strnatcasecmp');
    }

Here is the call graph for this function:


Member Function Documentation

ArrayIterator::append ( value) [inherited]
Parameters:
$valueis appended as last element
Warning:
this method cannot be called when the ArrayIterator refers to an object.

Definition at line 818 of file spl.php.

{}
ArrayIterator::asort ( ) [inherited]

Sort the entries by values.

Definition at line 773 of file spl.php.

{}
ArrayIterator::count ( ) [inherited]
Returns:
the number of elements in the array or the number of public properties in the object.

Implements Countable.

Definition at line 834 of file spl.php.

{}
SubClasses::current ( )
Returns:
key() since that is the name we need

Reimplemented from ArrayIterator.

Definition at line 82 of file class_tree.php.

References ArrayIterator\key(), and ArrayIterator\natcasesort().

    {
        $result = parent::key();
        $parent = get_parent_class($result);
        if ($parent)
        {
            $interfaces = array_diff(class_implements($result), class_implements($parent));
            if ($interfaces)
            {
                $implements = array();
                foreach($interfaces as $interface)
                {
                    $implements = array_merge($implements, class_implements($interface));
                }
                $interfaces = array_diff($interfaces, $implements);
                natcasesort($interfaces);
                $result .= ' (' . join(', ', $interfaces) . ')';
            }
        }
        return $result;
    }

Here is the call graph for this function:

ArrayIterator::getArrayCopy ( ) [inherited]
Returns:
a copy of the array
Note:
when the ArrayIterator refers to an object then this method returns an array of the public properties.

Definition at line 824 of file spl.php.

{}
RecursiveArrayIterator::getChildren ( ) [inherited]
Returns:
an iterator for the current elements children
Note:
the returned iterator will be of the same class as $this

Implements RecursiveIterator.

Definition at line 43 of file recursivearrayiterator.inc.

References ArrayIterator\current().

    {
        if ($this->current() instanceof self)
        {
            return $this->current();
        }
        if (empty($this->ref))
        {
            $this->ref = new ReflectionClass($this);
        }
        return $this->ref->newInstance($this->current());
    }

Here is the call graph for this function:

ArrayIterator::getFlags ( ) [inherited]
Returns:
current flags

Definition at line 769 of file spl.php.

{}
RecursiveArrayIterator::hasChildren ( ) [inherited]
Returns:
whether the current element has children

Implements RecursiveIterator.

Definition at line 34 of file recursivearrayiterator.inc.

References ArrayIterator\current().

    {
        return is_array($this->current());
    }

Here is the call graph for this function:

ArrayIterator::key ( ) [inherited]

Return the key of the current element.

Implements Iterator.

Definition at line 846 of file spl.php.

Referenced by current().

{}
ArrayIterator::ksort ( ) [inherited]

Sort the entries by key.

Definition at line 777 of file spl.php.

{}
ArrayIterator::natcasesort ( ) [inherited]

Sort the entries by values using case insensitive "natural order" algorithm.

Definition at line 793 of file spl.php.

Referenced by current().

{}
ArrayIterator::natsort ( ) [inherited]

Sort the entries by values using "natural order" algorithm.

Definition at line 789 of file spl.php.

{}
ArrayIterator::next ( ) [inherited]

Move forward to next element.

Implements Iterator.

Definition at line 849 of file spl.php.

{}
ArrayIterator::offsetExists ( index) [inherited]
Parameters:
$indexoffset to inspect
Returns:
whetehr offset $index esists

Implements ArrayAccess.

Definition at line 798 of file spl.php.

{}
ArrayIterator::offsetGet ( index) [inherited]
Parameters:
$indexoffset to return value for
Returns:
value at offset $index

Implements ArrayAccess.

Definition at line 803 of file spl.php.

{}
ArrayIterator::offsetSet ( index,
newval 
) [inherited]
Parameters:
$indexindex to set
$newvalnew value to store at offset $index

Implements ArrayAccess.

Definition at line 808 of file spl.php.

Referenced by __construct().

{}
ArrayIterator::offsetUnset ( index) [inherited]
Parameters:
$indexoffset to unset

Implements ArrayAccess.

Definition at line 812 of file spl.php.

{}
ArrayIterator::rewind ( ) [inherited]

Rewind the Iterator to the first element.

Implements Iterator.

Definition at line 837 of file spl.php.

{}
ArrayIterator::seek ( position) [inherited]
Parameters:
$positionoffset to seek to
Exceptions:
OutOfBoundsExceptionif $position is invalid

Implements SeekableIterator.

Definition at line 829 of file spl.php.

{}
ArrayIterator::setFlags ( flags) [inherited]

Set behavior flags.

Parameters:
$flagsbitmask 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

Definition at line 764 of file spl.php.

{}
ArrayIterator::uasort ( mixed  cmp_function) [inherited]

Sort the entries by values using user defined function.

Definition at line 781 of file spl.php.

{}
ArrayIterator::uksort ( mixed  cmp_function) [inherited]

Sort the entries by key using user defined function.

Definition at line 785 of file spl.php.

Referenced by __construct().

{}
ArrayIterator::valid ( ) [inherited]

Check if there is a current element after calls to rewind() or next().

Implements Iterator.

Definition at line 840 of file spl.php.

{}

Member Data Documentation

const ArrayIterator::ARRAY_AS_PROPS = 0x00000002 [inherited]

Array indices can be accessed as properties in read/write.

Definition at line 747 of file spl.php.

const ArrayIterator::STD_PROP_LIST = 0x00000001 [inherited]

Properties of the object have their normal functionality when accessed as list (var_dump, foreach, etc.)

Definition at line 745 of file spl.php.


The documentation for this class was generated from the following file: