PHP Classes

File: tree_test.php

Recommend this page to a friend!
  Classes of Guilherme Blanco   pTree   tree_test.php   Download  
File: tree_test.php
Role: Example script
Content type: text/plain
Description: Test of pTree (Full of comments)
Class: pTree
Manipulate hierarchical data structures like trees
Author: By
Last change:
Date: 19 years ago
Size: 3,399 bytes
 

Contents

Class file image Download
<?php

// Loading Abstract Data Type pTree
require_once "class.pTree.php";

// Creating tree
$tree = new pTree;

echo
"<h1>Tree (Separator: \"/\")</h1>";

// Testing add with unlimited depth and value type
// add(nodeName [, nodeValue])
// PS.: Spaces are allowed, but converted to "_" char
$tree->add("child1");
$tree->add("child2", "value");
$tree->add("child3", array(1 => "value1", "item2" => 200));
$tree->add("child1/sub-child1", "valueTest");
$tree->add("child1/sub-child2", 200);
$tree->add("child1/sub-child3");
$tree->add("child4", "value");
$tree->add("child5");
$tree->add("child5/sub-child5.1");
$tree->add("child5/sub-child5.1/sub-child5.1.1");
$tree->add("child5/sub-child5.1/sub-child5.1.1/sub-child5.1.1.1");
$tree->add("child5/sub-child5.1/sub-child5.1.1/sub-child5.1.1.1/sub-child5.1.1.1.1", "Deep... but with value. =)");

// Test commenting a node (can be any node)
// comment(nodeName, nodeCommment)
// PS.: new line separator: \n
$tree->comment("child1/sub-child1", "Testing comments");

// Test retrieving a node
// get(nodeName)
echo "<b>Value of child2:</b> ".$tree->get("child2")."<br />";
echo
"<b>Value of child1/sub-child2:</b> ".$tree->get("child1/sub-child2")."<br />";

// Converting tree into a Human readable text
echo "<h3>Displaying tree before removes</h3>";
echo
"<pre>\n";
echo
$tree->toString(1);
echo
"</pre>";

// Test removing a node (can be any node). Sub-childs will be delete too
// remove(nodeName)
$tree->remove("child2");
$tree->remove("child5");

$tree->comment("child4", "Comments anywhere! =P");

// Retrieving content
$tree_content = $tree->toString(1);

// Displaying Tree after Node remove
echo "<h3>Displaying tree after removes</h3>";
echo
"<pre>\n";
echo
$tree_content;
echo
"</pre>";


// Testing error handler (brackets test)
// Uncoment the next 2 lines to test

//$nTree = new pTree;
//$nTree->fromString(substr($tree_content, 0, strlen($tree_content) - 4));



// Reverse way... building new tree from a given text
$tree2 = new pTree(";");
$tree2->fromString($tree_content);

echo
"<h1>Tree 2 (Separator: \";\")</h1>";

// Look at separator usage
// Updating content
$tree2->add("child1;sub-child3", "Now with value!");

// Commenting
$tree2->comment("child1;sub-child3", "Now I can put some comment here\nWith new line included!!!");

// Displaying tree2 node value, showing separator usage
echo "<b>Value of child1;sub-child3:</b> ".$tree2->get("child1;sub-child3")."<br />";

// Updating content
$tree2->add("child1;sub-child3", "Now with value!");

// Displaying tree
echo "<pre>\n";
echo
$tree2->toString(1);
echo
"</pre>";



// Testing other methods
echo "<h1>Testing Other Tools (using Tree 2)</h1>";

// isRoot(nodeName) => check if the node is root or not
echo "<b>child4</b> ".(($tree2->isRoot("child4")) ? "is" : "isn't")." root<br />";
// hasChilds(nodeName) => checks if nodeName has childNodes or not
echo "<b>child3</b> ".(($tree2->hasChilds("child3")) ? "has" : "hasn't")." childs<br />";
// hasValue(nodeName) => check if nodeName has a value or not
echo "<b>child1;sub-child1</b> ".(($tree2->hasValue("child1;sub-child1")) ? "has" : "hasn't")." value<br />";

// Displaying tree
echo "<h3>Displaying Object Tree 2 - Showing real pTree Structure</h3>";
echo
"<pre>\n";
print_r($tree2);
echo
"</pre>";

?>