Example #1
0
class Leaf extends Component
{
    public function add(Component $c)
    {
        print "Cannot add to a leaf";
    }
    public function remove(Component $c)
    {
        print "Cannot remove from a leaf";
    }
    public function display()
    {
        print_r($this->name);
    }
}
// Create a tree structure
$root = new Composite("root");
$root->add(new Leaf("Leaf A"));
$root->add(new Leaf("Leaf B"));
$comp = new Composite("Composite X");
$comp->add(new Leaf("Leaf XA"));
$comp->add(new Leaf("Leaf XB"));
$root->add($comp);
$root->add(new Leaf("Leaf C"));
// Add and remove a leaf
$leaf = new Leaf("Leaf D");
$root->add($leaf);
$root->remove($leaf);
// Recursively display tree
$root->display();