## Apache Zeta Components Manual :: Docs For Class ezcTreeMemory

### Tree::ezcTreeMemory

### Class ezcTreeMemory

ezcTreeMemory is an implementation of a tree backend that operates on an in-memory tree structure. Meta-information is kept in objects of the ezcTreeMemoryNode class.

Example:

1. <?php
2. // Create a new tree
3. $tree=ezcTreeMemory :: create (new ezcTreeMemoryDataStore () );
4. // or
5. $tree=new ezcTreeMemory (new ezcTreeMemoryDataStore () );
6. ?>

See ezcTree for examples on how to operate on the tree.

Source for this file: /Tree/src/backends/memory.php

    ezcTree
       |
       --ezcTreeMemory

Version: | //autogentag//

### Properties

string | read/write | `$nodeClassName` Which class is used as tree node - this class *must* inherit the ezcTreeNode class.
ezcTreeXmlDataStore | read | `$store` The data store that is used for retrieving/storing data.

### Inherited Member Variables

From ezcTree
protected | `ezcTree::$inTransaction`
protected | `ezcTree::$inTransactionCommit`
protected | `ezcTree::$properties`

### Method Summary

public static ezcTreeMemory | `create( $store )` A factory method that creates a new empty tree using the data store $store.
protected ezcTreeMemory | `__construct( $store )` Constructs a new ezcTreeMemory object.
public void | `addChild( $parentId , $childNode )` Adds the node $childNode as child of the node with ID $parentId
public void | `delete( $nodeId )` Deletes the node with ID $nodeId from the tree, including all its children
public ezcTreeNodeList | `fetchChildren( $nodeId )` Returns all the children of the node with ID $nodeId.
public ezcTreeNode | `fetchNodeById( $nodeId )` Returns the node identified by the ID $nodeId.
public ezcTreeNode | `fetchParent( $nodeId )` Returns the parent node of the node with ID $nodeId.
public ezcTreeNodeList | `fetchPath( $nodeId )` Returns all the nodes in the path from the root node to the node with ID $nodeId, including those two nodes.
public ezcTreeNodeList | `fetchSubtree( $nodeId )` Alias for fetchSubtreeDepthFirst().
public ezcTreeNodeList | `fetchSubtreeBreadthFirst( $nodeId )` Returns the node with ID $nodeId and all its children, sorted according to the Breadth-first sorting algorithm.
public ezcTreeNodeList | `fetchSubtreeDepthFirst( $nodeId )` Returns the node with ID $nodeId and all its children, sorted accoring to the Depthth-first sorting algorithm.
public void | `fixateTransaction( )` Fixates the transaction.
protected integer | `generateNodeID( )` This method generates the next node ID.
public int | `getChildCount( $nodeId )` Returns the number of direct children of the node with ID $nodeId.
public int | `getChildCountRecursive( $nodeId )` Returns the number of children of the node with ID $nodeId, recursively
public int | `getPathLength( $nodeId )` Returns the distance from the root node to the node with ID $nodeId
public ezcTreeNode | `getRootNode( )` Returns the root node
public bool | `hasChildNodes( $nodeId )` Returns whether the node with ID $nodeId has children
public bool | `isChildOf( $childId , $parentId )` Returns whether the node with ID $childId is a direct child of the node with ID $parentId
public bool | `isDescendantOf( $childId , $parentId )` Returns whether the node with ID $childId is a direct or indirect child of the node with ID $parentId
public bool | `isSiblingOf( $child1Id , $child2Id )` Returns whether the nodes with IDs $child1Id and $child2Id are siblings (ie, the share the same parent)
public void | `move( $nodeId , $targetParentId )` Moves the node with ID $nodeId as child to the node with ID $targetParentId
public bool | `nodeExists( $nodeId )` Returns whether the node with ID $nodeId exists.
public void | `setRootNode( $node )` Sets a new node as root node, this wipes also out the whole tree

### Inherited Methods

From ezcTree
public void | `ezcTree::accept()` Implements the accept method for visiting.
public abstract void | `ezcTree::addChild()` Adds the node $childNode as child of the node with ID $parentId.
protected void | `ezcTree::addTransactionItem()` Adds a new transaction item to the list.
public void | `ezcTree::beginTransaction()` Starts an transaction in which all tree modifications are queued until the transaction is committed with the commit() method.
protected void | `ezcTree::checkNodeId()` This method checks whether a node ID is valid to be used in a backend.
public void | `ezcTree::commit()` Commits the transaction by running the stored instructions to modify the tree structure.
public static void | `ezcTree::copy()` Copies the tree in $from to the empty tree in $to.
public ezcTreeNode | `ezcTree::createNode()` Creates a new tree node with node ID $nodeId and $data.
public abstract void | `ezcTree::delete()` Deletes the node with ID $nodeId from the tree, including all its children.
public abstract ezcTreeNodeList | `ezcTree::fetchChildren()` Returns all the children of the node with ID $nodeId.
public ezcTreeNode | `ezcTree::fetchNodeById()` Returns the node identified by the ID $nodeId.
public abstract ezcTreeNode | `ezcTree::fetchParent()` Returns the parent node of the node with ID $nodeId.
public abstract ezcTreeNodeList | `ezcTree::fetchPath()` Returns all the nodes in the path from the root node to the node with ID $nodeId, including those two nodes.
public abstract ezcTreeNodeList | `ezcTree::fetchSubtree()` Alias for fetchSubtreeDepthFirst().
public abstract ezcTreeNodeList | `ezcTree::fetchSubtreeBreadthFirst()` Returns the node with ID $nodeId and all its children, sorted according to the Breadth-first sorting algorithm.
public abstract ezcTreeNodeList | `ezcTree::fetchSubtreeDepthFirst()` Returns the node with ID $nodeId and all its children, sorted according to the Depth-first sorting algorithm.
protected abstract integer | `ezcTree::generateNodeID()` This method generates the next node ID.
public abstract int | `ezcTree::getChildCount()` Returns the number of direct children of the node with ID $nodeId.
public abstract int | `ezcTree::getChildCountRecursive()` Returns the number of children of the node with ID $nodeId, recursively.
public abstract int | `ezcTree::getPathLength()` Returns the distance from the root node to the node with ID $nodeId.
public abstract ezcTreeNode | `ezcTree::getRootNode()` Returns the root node.
public abstract bool | `ezcTree::hasChildNodes()` Returns whether the node with ID $nodeId has children.
public bool | `ezcTree::inTransaction()` Returns whether we are currently in a transaction or not
public bool | `ezcTree::inTransactionCommit()` Returns whether we are currently in a transaction commit state or not
public abstract bool | `ezcTree::isChildOf()` Returns whether the node with ID $childId is a direct child of the node with ID $parentId.
public abstract bool | `ezcTree::isDescendantOf()` Returns whether the node with ID $childId is a direct or indirect child of the node with ID $parentId.
public abstract bool | `ezcTree::isSiblingOf()` Returns whether the nodes with IDs $child1Id and $child2Id are siblings (ie, they share the same parent).
public abstract void | `ezcTree::move()` Moves the node with ID $nodeId as child to the node with ID $targetParentId.
public abstract bool | `ezcTree::nodeExists()` Returns whether the node with ID $nodeId exists.
public void | `ezcTree::rollback()` Rolls back the transaction by clearing all stored instructions.
public abstract void | `ezcTree::setRootNode()` Sets a new node as root node, this also wipes out the whole tree.

### Methods

#### create

static ezcTreeMemory create( ezcTreeMemoryDataStore $store )

A factory method that creates a new empty tree using the data store $store.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$store` | ezcTreeMemoryDataStore |

#### __construct

ezcTreeMemory __construct( ezcTreeMemoryDataStore $store )

Constructs a new ezcTreeMemory object.

The store that is used for data storage should be passed as the $store argument.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$store` | ezcTreeMemoryDataStore |

#### addChild

void addChild( string $parentId , ezcTreeNode $childNode )

Adds the node $childNode as child of the node with ID $parentId

##### Parameters:

Name | Type | Description
--- | --- | ---
`$parentId` | string |
`$childNode` | ezcTreeNode |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::addChild()` | Adds the node $childNode as child of the node with ID $parentId.

#### delete

void delete( string $nodeId )

Deletes the node with ID $nodeId from the tree, including all its children

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::delete()` | Deletes the node with ID $nodeId from the tree, including all its children.

#### fetchChildren

ezcTreeNodeList fetchChildren( string $nodeId )

Returns all the children of the node with ID $nodeId.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::fetchChildren()` | Returns all the children of the node with ID $nodeId.

#### fetchNodeById

ezcTreeNode fetchNodeById( string $nodeId )

Returns the node identified by the ID $nodeId.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Exceptions:

Type | Description
--- | ---
`ezcTreeInvalidIdException` | if there is no node with ID $nodeId

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::fetchNodeById()` | Returns the node identified by the ID $nodeId.

#### fetchParent

ezcTreeNode fetchParent( string $nodeId )

Returns the parent node of the node with ID $nodeId.

This method returns null if there is no parent node.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::fetchParent()` | Returns the parent node of the node with ID $nodeId.

#### fetchPath

ezcTreeNodeList fetchPath( string $nodeId )

Returns all the nodes in the path from the root node to the node with ID $nodeId, including those two nodes.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::fetchPath()` | Returns all the nodes in the path from the root node to the node with ID $nodeId, including those two nodes.

#### fetchSubtree

ezcTreeNodeList fetchSubtree( string $nodeId )

Alias for fetchSubtreeDepthFirst().

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::fetchSubtree()` | Alias for fetchSubtreeDepthFirst().

#### fetchSubtreeBreadthFirst

ezcTreeNodeList fetchSubtreeBreadthFirst( string $nodeId )

Returns the node with ID $nodeId and all its children, sorted according to the Breadth-first sorting algorithm.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::fetchSubtreeBreadthFirst()` | Returns the node with ID $nodeId and all its children, sorted according to the Breadth-first sorting algorithm.

#### fetchSubtreeDepthFirst

ezcTreeNodeList fetchSubtreeDepthFirst( string $nodeId )

Returns the node with ID $nodeId and all its children, sorted accoring to the Depthth-first sorting algorithm.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::fetchSubtreeDepthFirst()` | Returns the node with ID $nodeId and all its children, sorted according to the Depth-first sorting algorithm.

#### fixateTransaction

void fixateTransaction( )

Fixates the transaction.

#### generateNodeID

integer generateNodeID( )

This method generates the next node ID.

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::generateNodeID()` | This method generates the next node ID.

#### getChildCount

int getChildCount( string $nodeId )

Returns the number of direct children of the node with ID $nodeId.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::getChildCount()` | Returns the number of direct children of the node with ID $nodeId.

#### getChildCountRecursive

int getChildCountRecursive( string $nodeId )

Returns the number of children of the node with ID $nodeId, recursively

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::getChildCountRecursive()` | Returns the number of children of the node with ID $nodeId, recursively.

#### getPathLength

int getPathLength( string $nodeId )

Returns the distance from the root node to the node with ID $nodeId

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::getPathLength()` | Returns the distance from the root node to the node with ID $nodeId.

#### getRootNode

ezcTreeNode getRootNode( )

Returns the root node

This methods returns null if there is no root node.

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::getRootNode()` | Returns the root node.

#### hasChildNodes

bool hasChildNodes( string $nodeId )

Returns whether the node with ID $nodeId has children

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::hasChildNodes()` | Returns whether the node with ID $nodeId has children.

#### isChildOf

bool isChildOf( string $childId , string $parentId )

Returns whether the node with ID $childId is a direct child of the node with ID $parentId

##### Parameters:

Name | Type | Description
--- | --- | ---
`$childId` | string |
`$parentId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::isChildOf()` | Returns whether the node with ID $childId is a direct child of the node with ID $parentId.

#### isDescendantOf

bool isDescendantOf( string $childId , string $parentId )

Returns whether the node with ID $childId is a direct or indirect child of the node with ID $parentId

##### Parameters:

Name | Type | Description
--- | --- | ---
`$childId` | string |
`$parentId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::isDescendantOf()` | Returns whether the node with ID $childId is a direct or indirect child of the node with ID $parentId.

#### isSiblingOf

bool isSiblingOf( string $child1Id , string $child2Id )

Returns whether the nodes with IDs $child1Id and $child2Id are siblings (ie, the share the same parent)

##### Parameters:

Name | Type | Description
--- | --- | ---
`$child1Id` | string |
`$child2Id` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::isSiblingOf()` | Returns whether the nodes with IDs $child1Id and $child2Id are siblings (ie, they share the same parent).

#### move

void move( string $nodeId , string $targetParentId )

Moves the node with ID $nodeId as child to the node with ID $targetParentId

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |
`$targetParentId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::move()` | Moves the node with ID $nodeId as child to the node with ID $targetParentId.

#### nodeExists

bool nodeExists( string $nodeId )

Returns whether the node with ID $nodeId exists.

##### Parameters:

Name | Type | Description
--- | --- | ---
`$nodeId` | string |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::nodeExists()` | Returns whether the node with ID $nodeId exists.

#### setRootNode

void setRootNode( ezcTreeNode $node )

Sets a new node as root node, this wipes also out the whole tree

##### Parameters:

Name | Type | Description
--- | --- | ---
`$node` | ezcTreeNode |

##### Redefinition of:

Method | Description
--- | ---
`ezcTree::setRootNode()` | Sets a new node as root node, this also wipes out the whole tree.

Documentation generated by phpDocumentor 1.4.3